Something';UPDATE查询中有错误


Something's wrong in UPDATE query

我有一个编辑表单

if (isset($_GET["id"])) {
    $pur_id = intval($_GET["id"]);
} else {
    echo "id not set";
}

然后我尝试执行下面的UPDATE查询。

$qry1 = mysqli_query($con,"UPDATE `purchase_info` SET `remarks` ='$remarks' WHERE `pur_info_id` = '$pur_id'");

这个查询确实有效,但它不会更新我数据库中的记录。但当我只传递数值而不是我放入行ID的变量时,它会更新记录。因此,如果我传递'pur_info_id' = 1,它就会更新我的记录。

这很奇怪。我正在使用int值转换值,但仍然没有运气。请提供建议。谢谢

您的查询是无意义的,因为当它实际执行UPDATE时,它会用已有的值替换pur_info_id列。假设$pur_id的值为1,那么您的查询可以写成:

UPDATE `purchase_info`
SET `pur_info_id` = 1,
    `remarks` = '$remarks'
WHERE `pur_info_id` = 1

这不会改变pur_info_id列,但remarks可能会更新为新的内容。您应该让我们知道您打算执行什么业务逻辑。在任何情况下,以下查询在逻辑上与您原来的查询等价:

UPDATE `purchase_info`
SET `remarks` = '$remarks'
WHERE `pur_info_id` = '$pur_id'

感谢大家分享您的宝贵见解和知识。我已经找到了解决问题的办法。这是一个非常愚蠢的问题,不过对我来说还是个新问题。我使用_GET请求从表中获取了行id,然后尝试在_POST请求中使用该id,这实际上导致了问题。

简而言之,我们不能在_POST请求中使用_GET的值。因此,解决方案是将_GET的值存储在一个变量中,并将其保存在一个隐藏的输入字段中。当发出_POST请求时,我们只需从隐藏字段中获取值。再次感谢!!