当前位置: 首页 > 面试题库 >

检查空结果(php,pdo,mysql)

姜德容
2023-03-14
问题内容

拜托,有人能告诉我我在做什么错吗?我只是从表中检索结果,然后将它们添加到数组中。一切正常,直到我检查结果为空为止。

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

$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 ;

当我尝试检查空结果时,我的代码返回“空”,但不再产生匹配结果:

$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';
}

相关文档在这里:http :
//php.net/manual/zh/pdostatement.rowcount.php



 类似资料:
  • 问题内容: 我的问题是 我尝试在两个都有id字段的表之间做一个简单的JOIN。我的结果是一个stdClass对象,因为我使用的是PDO。有谁知道我该如何区分第一个表的ID和第二个表的ID? 代码 如果我尝试使用$ products-> id,它将显示 类别 表的ID 。如果它是一个数组,则可以使用$ products [‘p.id’],我需要一个替代方法。 非常感谢。 问题答案: 您必须为一个表或

  • 问题内容: 我想要一个条件,以防该行根本不存在。 尝试过,但没有一个起作用。 问题答案: 您可以直接检查返回值。 如果您询问是否进行检查 而不进行获取, 则只需让MySQL返回a (或使用命令)。

  • 问题内容: 谁能指出如何检查选择查询是否返回非空结果集? 例如,我有下一个查询: 我应该像下一个那样做吗: 测试结果集是否不为空? 问题答案: 使用@@ ROWCOUNT: 根据SQL Server联机丛书: 返回受最后一条语句影响的行数。如果行数超过20亿,请使用ROWCOUNT_BIG。

  • 我正在制作一个php注册脚本,注册工作正常,所有内容都已成功输入数据库,激活电子邮件工作正常,但每当我使用mysqli查询来选择或更新信息时,它都不起作用。 例如,当我使用我知道数据库中存在的帐户登录时,它告诉我用户名不存在,当单击电子邮件中的激活链接时,查询无法以相同的方式更新数据库。 我相信这是一个非常简单的错误,我忽略了我的新手,但我找了几个小时后找不到合适的答案。我真的不确定问题出在哪里。

  • 当PDO::ATTR_EMULATE_PREPARES设置为false并且您的查询被终止时(例如MySQL Workbench- 结果,您的应用程序接收到空的结果集,尽管该查询应该返回一些数据。没有办法处理那种情况。当您对收到的PDO语句运行errorCode()时,会得到:“00000”,errorInfo()返回一个数组: 我正在运行:MySQL 5.6.22,PHP 5.6.4,pdo_my

  • 我定义了一个结构… 有时我给它分配一个空会话(因为不可能为零) 然后我想检查一下,如果它是空的: 显然这是行不通的。我怎么写?