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
返回受影响(已删除/更新/插入但未选中)的行数!