使用PHP中的PDO基于主键读取MySQL数据库

时间:2014-02-11 23:44:54

标签: php mysql sql pdo

我的代码似乎不起作用。我正在使用以下内容:

$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)只显示数组,但这不是预期的。我正在阅读的数据是:

My Data

所以我应该期望返回一个Array,而不是Boolean。 PDO正确且有效,因为我可以调用写命令。使用PDO将基于主键order_id的行读入可解析数组的最佳方法是什么?

作为一种拆分,当数据基于SELECT * WHERE?TABLE从Primary Key读取单行数据的效率更高的方式? >

2 个答案:

答案 0 :(得分:1)

你必须将结果存储在某处,添加:

$rows = $statement->fetchAll(PDO::FETCH_ASSOC);

<{1>}旁边的<{1}}存储在$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数据库,条件周围的括号也可能导致查询失败。