我的代码似乎不起作用。我正在使用以下内容:
$statement = $db->prepare("SELECT * FROM carts WHERE (order_id = ':order_id')");
$result = $statement->execute(array(':order_id' => $order_id));
$result = $statement->fetch();
根据gettype($result)
返回一个布尔值; print_r($result)
只显示数组,但这不是预期的。我正在阅读的数据是:
所以我应该期望返回一个Array,而不是Boolean。 PDO正确且有效,因为我可以调用写命令。使用PDO将基于主键order_id
的行读入可解析数组的最佳方法是什么?
作为一种拆分,当数据基于SELECT * WHERE
?
Primary Key
读取单行数据的效率更高的方式? >
答案 0 :(得分:1)
你必须将结果存储在某处,添加:
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
$result = $statement->fetch();
中的数据
答案 1 :(得分:1)
之前,请正确设置错误模式。如果您可以使用单引号运行查询而不会弹出错误,请设置:
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$statement = $db->prepare("SELECT * FROM carts WHERE order_id=:order_id");
$result = $statement->execute(array(':order_id' => $order_id));
$row = ($result ? $statement->fetch(PDO::FETCH_ASSOC) : array('problem' => 'with your query'));
print_r($result);
PDO因参数周围的单引号而失败。检查$result
的{{1}}的返回值。您可能必须为获取指定提取模式。根据您的sql数据库,条件周围的括号也可能导致查询失败。