检查是否' pdo->查询foreach'返回null

时间:2013-02-05 15:54:16

标签: php mysql sql pdo

数据库很好,但我无法理解为什么$ 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;

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

当我在PDO中更改name =“Joshua” - > QUERY以获取数据库中不存在的名称时,我不会收到“我们没有任何约书亚”的消息;

有任何处理这个问题的提示吗?

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

提前致谢并扼杀糟糕的英语。

3 个答案:

答案 0 :(得分:2)

您可以使用PDO rowCount测试结果是否为null。参见:

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

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

答案 1 :(得分: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;

答案 2 :(得分: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";
}