数据库很好,但我无法理解为什么$ 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。
提前致谢并扼杀糟糕的英语。
答案 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";
}