MySQL ОБНОВЛЕНИЕ на основе 2 AJAX параметров данных ($ _POST)? - PullRequest
0 голосов
/ 11 марта 2020

Попытка вызова AJAX, который ОБНОВЛЯЕТ строку на основе идентификатора (pid = 38) и изменяет значение столбца на NULL на основе значения кнопки (taskimg0). Я могу заставить его работать, если жестко закодировать значение $_POST['dtf'] в taskimg0, но только с одним параметром данных AJAX. Как использовать оба параметра данных в вызове AJAX и использовать $ _POST в операторе sql? Я новичок в обоих этих языках, извините

HTML

 <input type="hidden" class="pid" name="pid" value="38">
<button class="remove-tf" name="submit" type="submit" value="taskimg0">Remove</button>

AJAX

      $(function() {
      $(".remove-tf").click(function() {
      $.ajax({
          type: 'POST',
          url: '/tf-delete.php',
          data: 'pid=' + $(".pid").attr("value") + '&dtf=' + $(".remove-tf").attr("value")
      });
      });
        });

MySQL

<?php
include 'sqlconnection.php';
$conn = OpenCon();

$sql = "UPDATE tasks SET $_POST['dtf']=NULL WHERE pid=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('i', $_POST['pid']);
if ($stmt->execute()){
    header('Location: /listings.php');
};
$stmt->close();
CloseCon($conn);
?>

1 Ответ

1 голос
/ 11 марта 2020

Использование

$(this).val(); 

Получает значение, прикрепленное к нажатой кнопке

Также опасно передавать таблицы, имена столбцов из вашей формы.

Вы можете легко прикрепить значение pid и dtf к кнопке вместо

<button class="remove-tf" pid="38" name="submit" type="submit" value="taskimg0">Remove</button>

Затем в параметре данных для ajax сделайте это

data: 'pid=' + $(this).attr("pid") + '&dtf=' + $(this).val()

Но, как упоминал @Kevin, внесите в белый список значение dtf, прежде чем выбросить его в свой запрос

$acceptedColNames = ['taskimg0'];

if(in_array((string)$_POST['dtf'], $acceptedColNames) === false){
    die('Attempt to change value');//stop processing
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...