我正在尝试使用此查询更新表,但似乎无法正常工作。
$query="UPDATE product SET qty = (qty - '$qty') WHERE barcode = '$barcode'";
$result = $this->db->conn_id->prepare($query);
$result->execute();
我已经尝试将查询放在try catch块中,但它不会抛出任何错误。问题在于CodeIgniter中的实现,因为此查询在codeigniter外部执行时有效。
答案 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)
如果受影响的行为零,我猜查询是否正确,看看数据库中是否存在条形码变量的值