【发布时间】:2020-03-11 18:09:59
【问题描述】:
尝试根据另一列值 ($_POST['pid']) 将列 ($_POST['dtf']) 值更新为 null,但它不起作用。我尝试了不同版本的 MySQL 语句,但均无济于事。
AJAX
$(function() {
$(".remove-tf").click(function() {
$.ajax({
type: 'POST',
url: 'tf-delete.php',
data: 'pid=' + $(".pid").attr("value") + '&dtf=' + $(this).val()
});
});
});
PHP
<?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);
?>
HTML
<input type="hidden" class="pid" name="pid" value="">
<button class="remove-tf" name="submit" type="button" value="taskimg0">Remove</button>
【问题讨论】:
-
$(".remove-tf").attr("value")将是 DOM 中第一个.remove-tf元素的值,而不是用户点击的那个。 -
你应该使用
$(this).val()来获取被点击元素的值。 -
而
$(".pid").attr("value")应该是$(this).prev(".pid").val() -
@Suboptimizer 他正在使用准备好的语句。但是你不能使用占位符来表示列名。
-
为什么是
$(this).prev(".pid").val()?我不能只根据其类名获取元素的值吗?在我的真实代码中它们并不直接相邻