[英]MySQLi PHP -> LEFT JOIN Returns Null when using fetch array
[英]PHP with MySQLi fetch does not return rows with NULL on LEFT JOIN
我有一個表matches
包含體育,地區,國家和聯盟等參考ID的行。 我使用LEFT JOIN
來查找實際聯賽名稱,因為並非所有比賽都有聯盟ID。
我使用以下內容:
$stmt = $mysqli->prepare("
SELECT leagues.name, matches.league
FROM matches
LEFT JOIN leagues
ON leagues.short = matches.league
WHERE leagues.lang = ? AND matches.sport = ? AND matches.region = ? AND matches.country = ?
ORDER BY leagues.name ASC");
$stmt->bind_param('ssss',$lang,$sport_short,$region_short,$country_short);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($league,$league_short);
如果我此時使用var_dump($league)
或var_dump($league_short)
我會看到NULL
值。 但是,在我嘗試使用while ($stmt->fetch) {...}
行之后,沒有包含NULL
行,我缺少什么?
在您的查詢中,如果找不到匹配項, leagues.lang
也將為NULL
,然后它將被WHERE
子句過濾掉。
所以你可以放下leagues.lang = ?
在WHERE
子句中,您可以將其修改為以下內容:
((leagues.short IS NOT NULL AND leagues.lang = ?) OR leagues.short is NULL)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.