如果没有匹配的行,那么MySQL将返回一个空集(这里我已经定义了随机的字段,只运行查询):
mysql> CREATE TABLE dienstplan (kw varchar(10), datum integer, schicht integer, perso_id integer);
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE codes (lcfruh varchar(2));
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE personal (perso_id integer, status varchar(5));
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> select count(schicht) as front_lcfruh,
-> kw,
-> datum
-> from dienstplan
-> left join codes on dienstplan.schicht = codes.lcfruh
-> left join personal on personal.perso_id = dienstplan.perso_id
-> where codes.lcfruh != ''
-> and personal.status = 'rezeption'
-> and dienstplan.kw = '$kw'
-> group by dienstplan.datum;
Empty set (0.00 sec)
您可以检查查询返回的行数。在这种情况下,你会得到零。
所以,你可以修改你的代码是这样的(伪代码):
$exec = $db->execute($query);
if ($exec->error() !== false) {
// Handle errors. Possibly quit or raise an exception.
}
if (0 == $exec->count())
{
// No rows. We return a default tuple
$tuple = array(
'front_lcfruh' => 0,
'kw' => $kw,
'datum' => null
);
handleTuple($tuple);
} else {
while($tuple = $exec->fetch()) {
handleTuple($tuple);
}
}
哪里handleTuple()
是格式化功能或以其他方式操纵返回的行。
使用is_null或===运营商更换
。 'is_null($ result ['column'])' '$ result ['column'] === NULL' –
尽我所知(至少在Oracle中)'count'不能返回null。 – gdoron
schicht来自dienstplan,如果结果为NULL意味着没有匹配的行 – user2615859