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

时间:2013-04-07 14:05:05

标签: php mysql pdo phpmyadmin

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

我在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)); 

相同的结果

2 个答案:

答案 0 :(得分:2)

对于大多数数据库,

rowCount()不返回受SELECT语句影响的行数 Manual

答案 1 :(得分:1)

首先,按照PDO tag wiki中描述的方式连接到PDO并在上设置错误报告,以确保您会看到发生任何错误。
在查询中出现故意错误,以测试您是否可以看到它们。

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