如果沒有匹配的行,那麼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