0

我正在尝试使用此查询更新表,但似乎不起作用。

  $query="UPDATE product SET qty = (qty - '$qty') WHERE barcode = '$barcode'";  
  $result = $this->db->conn_id->prepare($query);
  $result->execute();  

我尝试将查询放在 try catch 块中,但它不会引发任何错误。问题在于 CodeIgniter 中的实现,因为此查询在 codeigniter 外部执行时有效。

4

2 回答 2

1

查看您的代码有几件事。

您没有正确使用准备好的语句。使用准备好的语句的好处是通过不同的函数传入你需要的变量,这样你就可以正确地转义它们。考虑以下:

$query="UPDATE product SET qty = (qty - ':qty') WHERE barcode = ':barcode'";  

$stmt = $this->db->conn_id->prepare($query);

$stmt->bindParam(':qty', $qty, PDO::PARAM_STR);
$stmt->bindParam(':barcode', $barcode, PDO::PARAM_STR);

$stmt->execute();  

echo "Rows affected: " . $stmt->rowCount();

在这里,我们进行查询并设置其中的参数。然后我们将变量绑定到语句,以便它们被正确转义。之后我们可以执行该语句,然后使用该fetch()函数来获取我们的响应。传入的枚举会将结果作为关联数组返回。

于 2012-12-27T15:32:57.040 回答
0

如果受影响的行为零,我猜查询是正确的,看看数据库中是否存在条形码变量的值

于 2012-12-27T15:55:49.023 回答