MySQL查询在phpmyadmin中工作,但在带有PDO的php中不工作

MySQL查询在phpmyadmin中工作,但在带有PDO的php中不工作,php,mysql,pdo,phpmyadmin,Php,Mysql,Pdo,Phpmyadmin,当我在phpmyadmin中运行此查询时,它运行良好并返回它应该返回的内容。 当我用PDO在php中运行它时,它失败了。有人能告诉我为什么吗?错误消息显示使用了正确的参数 我在phpmyadmin中运行的代码 SELECT `fd1`.`id` , `fd2`.`id` , `fd3`.`id` FROM `food` AS `fd1` , `food` AS `fd2` , `food` AS `fd3` WHERE `fd1`.`food` = 'Empty' AN

当我在
phpmyadmin
中运行此查询时,它运行良好并返回它应该返回的内容。
当我用
PDO
php
中运行它时,它失败了。有人能告诉我为什么吗?错误消息显示使用了正确的参数

我在phpmyadmin中运行的代码

SELECT  `fd1`.`id` ,  `fd2`.`id` ,  `fd3`.`id` 
FROM  `food` AS  `fd1` ,  `food` AS  `fd2` ,  `food` AS  `fd3` 
WHERE  `fd1`.`food` =  'Empty'
AND  `fd2`.`food` =  'Carrot'
AND  `fd3`.`food` =  'Empty'
我在php中运行的代码

$sql = 'SELECT  `fd1`.`id` ,  `fd2`.`id` ,  `fd3`.`id` 
        FROM  `food` AS  `fd1` ,  `food` AS  `fd2` ,  `food` AS  `fd3` 
        WHERE  `fd1`.`food` = ? 
        AND  `fd2`.`food` = ? 
        AND  `fd3`.`food` = ?'; 
$stmt = $db->prepare($sql);
$stmt->bindParam(1, $food1, PDO::PARAM_STR);
$stmt->bindParam(2, $food2, PDO::PARAM_STR);
$stmt->bindParam(3, $food3, PDO::PARAM_STR);
$stmt->execute();


if (!$stmt->rowCount())
    die("ERROR:FOOD_SEARCH_FAILURE food:$food1, $food2, $food3 rows returned". $stmt->rowCount());
我还尝试使用以下工具运行它:

$stmt->execute(array($food1, $food2, $food3)); 

相同的结果

首先,按照中所述的方式连接到PDO,并将错误报告设置为打开,以确保您将看到发生的任何错误。
在查询中执行一个有意的错误,以测试是否可以看到它们

接下来,如果没有任何错误-检查数据库和绑定变量中的数据(代码中没有定义它们的地方)

rowCount()不会返回大多数数据库受SELECT语句影响的行数

您10万%确定$food1为空,$food2为胡萝卜,依此类推?查询成功了吗?(请看,它不必是空的,Carrot,Empty,它可以是存储在表中的任何值的组合。我使用了各种值,在
phpmyadmin
中它可以工作,在
php
中它不会在执行之后,使用errorInfo()来查看错误PDO错误消息是什么?数组([0]=>00000[1]=>2]=>)对于mysql,这可能是一个问题,只有在PDO的旧版本中才会出现。@YourCommonSense我不太明白为什么它应该是一个问题,只有在旧版本中才会出现?显然,这总是一个问题,因为
rowCount
返回受影响(已删除/更新/插入但未选中)的行数!