簡體   English   中英

帶有MySQLi fetch的PHP在LEFT JOIN上不返回帶NULL的行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM