我有一个编辑表格。我正在为此行提取数据 -
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值转换值但仍然没有运气。请指教。谢谢!
答案 0 :(得分:3)
您的查询是非感性的,因为当它实际执行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'
答案 1 :(得分:0)
感谢大家分享您宝贵的见解和知识。我找到了解决问题的方法。这是一个非常愚蠢的问题,对我而言是新的。我使用_GET请求从表中获取行id,然后尝试在我的_POST请求中使用id,这实际上导致了问题。
我们不能简单地在_POST请求中使用_GET的值。所以解决方案是将_GET的值存储在变量中,将其保存在隐藏的输入字段中。当发出_POST请求时,我们只需从隐藏字段中获取值。再次感谢!!