根据两列的$ _POST值将列值更新为NULL?

时间:2020-03-11 18:09:59

标签: php jquery mysql ajax

尝试基于另一个列值(/SuiteBundles/bundleId/clientScript.js /SuiteBundles/bundleId/ueScript.js )将列($_POST['dtf'])值更新为null,但无法正常工作。我尝试了不同版本的MySQL语句,但无济于事。
AJAX

$_POST['pid']

PHP

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

HTML

<?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 个答案:

答案 0 :(得分:1)

这是您的代码:

$sql = "UPDATE tasks SET '".$_POST['dtf']."' = NULL WHERE pid = ?";

这将产生一个查询,例如:

UPDATE tasks set 'foo' = null where pid = ?

这是无效的MySQL。列名不应用单引号引起来(在ANSI SQL中,字符串斜体使用单引号引起来)。

只需将代码更改为:

$sql = "UPDATE tasks SET ".$_POST['dtf']." = NULL WHERE pid = ?";

或者,如果您想使用带引号的标识符,请使用反引号:

$sql = "UPDATE tasks SET `".$_POST['dtf']."` = NULL WHERE pid = ?";
相关问题