【问题标题】:pdo codeigniter not executing update querypdo codeigniter 不执行更新查询
【发布时间】:2012-12-27 15:17:38
【问题描述】:

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

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

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

【问题讨论】:

标签: php codeigniter


【解决方案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() 函数来获取我们的响应。传入的枚举会将结果作为关联数组返回。

【讨论】:

  • 这个答案的一部分引用了这个SO question
  • 感谢更正,但它仍然没有更新我的表格。
  • 更新了我的答案。您的查询的行数是多少?
  • 受影响的行数:0,我尝试为数量设置静态值,但仍然不起作用。
  • 当您执行var_dump($this->db->conn_id) 时会发生什么。您确定该记录存在于您尝试更新的数据库中吗?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 2012-12-29
    相关资源
    最近更新 更多