PHP SQL 查询不返回与 phpMyAdmin 中相同的行

Posted

技术标签:

【中文标题】PHP SQL 查询不返回与 phpMyAdmin 中相同的行【英文标题】:PHP SQL query not returning same rows as in phpMyAdmin 【发布时间】:2015-05-28 19:32:30 【问题描述】:

这是在 phpMyAdmin 中运行的查询:

SELECT app . * 
FROM  `tap_applications` app,  `tap_jobs` job
WHERE job.id = app.job_id
AND job.closed =0
AND job.user_id =1

这会返回五行 (Showing rows 0 - 4 ( 5 total, Query took 0.0008 sec)),我可以看到这些行是正确的。

这是我执行查询的 PHP 代码:

$id=1;
$stmt = $dbh->prepare('SELECT app.* 
                         FROM `tap_applications` app, `tap_jobs` job 
                        WHERE job.id = app.job_id
                          AND job.closed = 0
                          AND job.user_id=?');
if($stmt->execute(array($id)))
    $apps = $stmt->fetch(PDO::FETCH_ASSOC);
    echo '<pre>'; print_r($apps); exit();

这个输出:

Array
(
    [id] => 2
    [job_id] => 6
    [name1] => Ben
    [name2] => //redacted
    [tel] => //redacted
    [email] => //redacted
    [cv] => 6-Ben1424692150.pdf
    [seen] => 0
    [time] => 2015-02-23 11:57:33
    [decision] => 1
)

为什么没有输出 SQL 查询返回的所有行?

【问题讨论】:

php.net/manual/en/pdostatement.fetch.php : PDOStatement::fetch — 从结果集中获取下一行。 尝试使用fetchAll函数。 【参考方案1】:

下面这一行只获取 1 行:

$apps = $stmt->fetch(PDO::FETCH_ASSOC);

改用fetchAll

$apps = $stmt->fetchAll(PDO::FETCH_ASSOC);

【讨论】:

以上是关于PHP SQL 查询不返回与 phpMyAdmin 中相同的行的主要内容,如果未能解决你的问题,请参考以下文章

PHP:PDO查询不返回结果,但在phpmyadmin中同样的查询返回4个结果?

使用变量的查询在 PHPMyAdmin 中有效,但在 PHP 脚本中无效

PHP MySQL查询不返回所有结果

mysql“日期之间”查询在 phpmyadmin 中有效,但 PDO 不返回任何内容

查询在 PHPMyAdmin 中工作但在 PHP 中不工作

类似于 PhpMyAdmin 的 PHP 通用 SQL 查询和结果