【问题标题】:PHP PDOStatement prepare and bindValue methodsPHP PDOStatement prepare 和 bindValue 方法
【发布时间】:2015-01-22 14:50:04
【问题描述】:

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

 $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 )

谢谢!

【问题讨论】:

  • 您不应该使用答案中的建议修改您的原始代码,因为这会使答案无效。

标签: php pdo prepare pdostatement


【解决方案1】:

您应该在数据库调用中添加错误处理,例如通过设置 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));

【讨论】:

  • @WEBDESIGNER 您是否在获取行并添加了错误处理?
猜你喜欢
  • 1970-01-01
  • 2019-04-09
  • 2013-08-24
  • 2014-09-11
  • 2011-01-06
  • 2013-03-31
  • 1970-01-01
  • 2015-09-12
  • 2011-11-11
相关资源
最近更新 更多