Php 什么';这个简单的fetch PDO语句有什么问题?
这个PDO代码怎么了?它没有给我任何结果,尽管在数据库的Php 什么';这个简单的fetch PDO语句有什么问题?,php,mysql,pdo,prepared-statement,fetch,Php,Mysql,Pdo,Prepared Statement,Fetch,这个PDO代码怎么了?它没有给我任何结果,尽管在数据库的tip表中肯定有一些结果 try{ $this->pdo = new PDO( "mysql:host=".zConfig::read('hostname').";dbname=".zConfig::read('database'), zConfig::read('username'), zConfig::read('password'), zConfig::read('drivers')); $this->p
tip
表中肯定有一些结果
try{
$this->pdo = new PDO( "mysql:host=".zConfig::read('hostname').";dbname=".zConfig::read('database'), zConfig::read('username'), zConfig::read('password'), zConfig::read('drivers'));
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $this->pdo->prepare("SELECT tip_text FROM tip WHERE product_id=:product_id AND item LIKE :which");
$stmt->execute(array(':product_id' => $id, ':which' => $which ));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if($row['tip_text']!='') echo $row['tip_text'];
else echo "";
}
catch(PDOException $e)
{ echo 'Error: ' . $e->getMessage(); }
我在哪里可以打印出PDO执行的最终查询?(包括参数)?变量
$id
和$id
从上面正确填充。至于打印实际填写的查询,您可能需要检查mysql日志;如果PDO执行真正的prepare而不是模拟prepare,那么查询将不会由PDO填写,而是由DBMS填写。尽管它模拟了prepare,但我不知道有什么方法可以获得实际发送的查询。真正帮助我调试应用程序的方法之一是在开发过程中回显我的查询,通过使用PDO,我可以不再那么方便吗?这不是PDO的问题;这是事先准备好的陈述的一个(轻微)缺点。您使用的任何提供它们的库,如果它实际上准备了一个语句,都可能有相同的问题。它们的全部要点是SQL和数据是分开的,最好是一直分开的,DBMS在最后将它们结合起来。@user961627:如果在此之前没有出现异常,则查询是成功的,并且没有返回任何行。奇数。我会在执行之前执行var\u dump($id,$which)
,并确保使用了正确的值。