我做错了什么?我只是从表中检索结果,然后将它们添加到数组中.一切都按预期进行,直到我判断结果为空...

这将获取匹配项,将其添加到我的数组中,并按预期 echo 结果:

$today = date('Y-m-d', strtotime('now'));

$sth = $db->prepare("SELECT id_email FROM db WHERE hardcopy = '1' AND hardcopy_date <= :today AND hardcopy_sent = '0' ORDER BY id_email ASC");

$sth->bindParam(':today', $today, PDO::PARAM_STR);

if(!$sth->execute()) {
    $db = null;
    exit();
}

while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
    $this->id_email[] = $row['id_email'];
    echo $row['id_email'];
}

$db = null;
return true;

当我try 判断空结果时,我的代码返回"empty",但不再产生匹配结果:

$today = date('Y-m-d', strtotime('now'));

$sth = $db->prepare("SELECT id_email FROM db WHERE hardcopy = '1' AND hardcopy_date <= :today AND hardcopy_sent = '0' ORDER BY id_email ASC");

$sth->bindParam(':today',$today, PDO::PARAM_STR);

if(!$sth->execute()) {
    $db = null;
    exit();
}

if ($sth->fetchColumn()) {
    echo 'not empty';
    while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
        $this->id_email[] = $row['id_email'];
        echo $row['id_email'];
    }
    $db = null;
    return true;
}
echo 'empty';
$db = null;
return false;

推荐答案

当你做$sth->fetchColumn()次时,你就扔掉了一个结果行.这不是你判断是否有结果的方式.是的

if ($sth->rowCount() > 0) {
  ... got results ...
} else {
   echo 'nothing';
}

相关文件如下:100

Mysql相关问答推荐

MariaDB字段+1

Python - 执行原始 SQL 时获取更新查询 (Mysql) 的结果

布尔值之间的 SQL less/greater 比较会产生意外结果

发生的原因及解决方法

如何获取每日登录用户数?

如何计算每行的剩余金额?

如何替换 SELECT 查询中重复记录的列?

如何知道 Select 查询花费了多少时间?

基于 3 个条件 Select 3 行的最佳 MySQL 索引和查询

为什么从我的 SQL 查询中删除 BINARY 函数调用会如此显着地改变查询计划?

SQL 查找边界之间的值

是否可以从 .SQL 文件中计算表中的行数?

估计行数 SQL

使用case查询并更新最后一条记录

如何在不违反唯一约束的情况下交换 MySQL 中两行的值?

什么是 PyMySQL,它与 MySQLdb 有何不同?它会影响 Django 部署吗?

PHP,MySQL 错误:列计数与第 1 行的值计数不匹配

在 PHP 中获取 MySQL 列的总和

使用 Java 通过 SSH 连接到远程 MySQL 数据库

MySQL错误 1005 (HY000): 无法创建表 'foo.#sql-12c_4' (errno: 150)