PHP PDOStatement准备和bindValue方法

时间:2014-11-24 19:21:17

标签: php pdo prepare pdostatement

为什么不在代码工作之下?

 $pdo = new PDO('mysql:dbname=_test;host=localhost','root', '');
 $select=$pdo->prepare("SELECT * FROM test WHERE th=:name");
 $select->bindValue(":name","1");
 print_r($select);

当我打印$ select it results:

 PDOStatement Object ( [dbh] => PDO Object ( ) [queryString] => SELECT * FROM test   WHERE th=:name )

谢谢!

1 个答案:

答案 0 :(得分:3)

您应该为数据库调用添加错误处理,例如通过设置PDO来抛出异常。

您当前的问题是您实际上并未execute()声明:

$select->bindValue(":name","1");
$select->execute();

之后,您需要fetch()结果集中的结果才能真正看到数据库中的值:

while ($row = $select->fetch()) {
  // do something with the data
}

编辑:要在PDO中启用例外(您不必再捕获它们,系统将抛出未处理的异常错误):

$pdo = new PDO('mysql:dbname=_test;host=localhost','root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));