我有一个编辑表单
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请求时,我们只需从隐藏字段中获取值。再次感谢!!