0

数据库很好,但我不明白为什么 $ROW 不能被识别为 NULL。

我有这个代码:

$pdo = new PDO("mysql:host=" . $this->hostname . ";dbname=" . $this->dbname, $this->username, $this->password);

foreach($pdo->query('SELECT * FROM people WHERE name="Joshua"') as $row):
    if($row['name'] != NULL):
        echo "WE HAVE ONE JOSHUA";
    else:
        echo "WE DO NOT HAVE ANY JOSHUA";
    endif;
endforeach;

当我运行这个脚本时,我得到了:“我们有一个约书亚”消息;

当我在 PDO->QUERY 中将 name="Joshua" 更改为数据库中不存在的名称时,我没有收到“我们没有任何 JOSHUA”消息;

有什么提示可以解决这个问题吗?

我只想创建一个语句来控制 FOREACH 是否返回 NULL。

在此先感谢并抱歉英语不好。

4

3 回答 3

2

您可以使用 PDO rowCount 测试结果是否为空。看:

$cmd = $pdo->prepare('SELECT * FROM people WHERE name="Joshua"');
$cmd->execute();
if ($cmd->rowCount() > 0)
{
    while ($row = $cmd->fetch())
    {
        do...
    }
}

PDO 不返回错误。您可以使用 PDOStatement::errorCode()。

于 2013-02-05T16:07:23.173 回答
0

这个怎么样?

foreach($pdo->query('SELECT COUNT(*) totalCOunt FROM people WHERE name="Joshua"') as $row):
    if($row['totalCOunt'] != 0):
        echo "WE HAVE ONE JOSHUA";
    else:
        echo "WE DO NOT HAVE ANY JOSHUA";
    endif;
endforeach;
于 2013-02-05T15:55:38.703 回答
0

您只需要一个循环来处理多行,
而如果您只获得一行,则不需要循环。

$result = $pdo->query('SELECT * FROM people WHERE name="Joshua"');
$row = $result->fetch();
if ($row) {
   echo "WE HAVE ONE JOSHUA";
   // here you have Joshua's data in $row
} else {
    echo "WE DO NOT HAVE ANY JOSHUA";
}
于 2013-02-05T18:03:56.953 回答