pdo codeigniter没有执行更新查询

时间:2012-12-27 15:17:38

标签: php codeigniter

我正在尝试使用此查询更新表,但似乎无法正常工作。

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

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

2 个答案:

答案 0 :(得分: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()函数来获取我们的响应。传入的枚举将结果作为关联数组返回。

答案 1 :(得分:0)

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