-1

为什么下面的代码不起作用?

 $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 它的结果:

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

谢谢!

4

1 回答 1

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));
于 2014-11-24T19:23:35.603 回答