UPDATE查询中出了点问题

时间:2016-04-03 09:31:26

标签: php mysql forms

我有一个编辑表格。我正在为此行提取数据 -

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值转换值但仍然没有运气。请指教。谢谢!

2 个答案:

答案 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请求时,我们只需从隐藏字段中获取值。再次感谢!!