ЗАМЕНИТЕ mySQL не добавляется / не заменяется в таблице mySQL - PullRequest
0 голосов
/ 12 июня 2018

У меня есть 3 параметра, которые должны добавить новые / обновить старые записи в пользовательскую таблицу mysql.Однако я не могу понять, ПОЧЕМУ , когда я нажимаю кнопку отправки ... ничего не происходит (и при этом я не получаю никаких ошибок).Я в недоумении, что делать.Я задал этот вопрос до и немного изменил свой код, основываясь на других уроках, думая, что это моя проблема ... не повезло: (

Я понимаю, что существуют опасения по поводу mysql injections - в настоящее время я просто хотел бы увидеть, как это работает, и если у вас есть предложения по смягчению инъекций, я весь слух. Я все еще новичок в mySQL ... но учусь медленно и понимаю (минимально), как можно использовать строковые переменные длясоздавать измененные запросы.

Вот мой код;

echo "<p><h5>Change address:</h5>";

//get user id when the login/visit page
$userid = get_current_user_id();


$loop = new WP_Query( $args );

//form start
echo '<form method = "post" action = "'. $_SERVER['PHP_SELF'] .'">';

//dropdown menu for collecting SKU of product
echo '<br><select name="sku">';
    echo '<option>-- Select product--</option>';
while ( $loop->have_posts() ) : $loop->the_post();
  global $product;
    echo '<option value=' . $product->get_sku() . '>' . $product->get_sku() . ' </option>';
  endwhile;
echo '</select>';

//hidden input for userid 
echo '<input type="hidden" id="userid" name="userid" value="' . $userid . '">'; 

//textbox for address
echo '<br><input type="text" value="Insert new address here" id="address" name="address" size="40" />';

//submit button
echo '<br><input type="submit" name="submit">';
echo '</form>';

//write to database
if(isset($_POST['submit'])) {

  $user = $_POST['userid'];
  $sku = $_POST['sku'];
  $address = $_POST['address'];

  $con2 = mysqli_connect("IP","user","password","wpdb");
  $updateaddress = "REPLACE INTO wp_newaddress(user, sku, address) VALUES($user, $sku, $address)";
  $retval = mysqli_query($con2,$updateaddress);
  if($retval)
   {
       echo 'Data Updated';
   }else{
       echo 'Data Not Updated';
   }
   mysqli_close($con2);
   }

Спасибо:)

1 Ответ

0 голосов
/ 12 июня 2018

Вам необходимо использовать подготовку и выполнение со связанными параметрами, чтобы избежать риска внедрения SQL.

Необходимо проверять наличие ошибок после каждой подготовки и выполнения и выводить любые ошибки в журнал ошибок.Если вы этого не сделаете, вы не увидите ошибок.

Конечно, вы также должны следить за своим журналом ошибок PHP (который обычно совпадает с журналом ошибок вашего http-сервера), но это само собой разумеется.Каждый PHP-разработчик должен следить за журналом ошибок (хотя многие разработчики этого не знают).

Вот пример:

$user = $_POST['userid'];
$sku = $_POST['sku'];
$address = $_POST['address'];

$con2 = mysqli_connect("IP","user","password","wpdb");

$updateaddress = "REPLACE INTO wp_newaddress (user, sku, address) VALUES (?, ?, ?)";

$stmt = mysqli_prepare($con2,$updateaddress);

if ($stmt) {
  mysqli_stmt_bind_param($stmt, 'sss', $user, $sku, $address);

  $ok = mysqli_stmt_execute($stmt);

  if ($ok) {
    echo 'Data Updated';
  } else {
    echo 'Data Not Updated';
    error_log(mysqli_stmt_error($stmt));
  }

  mysqli_stmt_close($stmt);
} else {
  error_log(mysqli_error($con2));
}

mysqli_close($con2);

Также прочитайте ответы в Как я могупредотвратить внедрение SQL в PHP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...