我有一個問題,不知道爲什麼我的mysqli查詢在PHP中無法正常工作。php mysqli fetch_assoc忽略左值加入的空值
我有兩個表:
table 1 "reviews"
id | dateCreated | reviewText | ...
table 2 "issues"
id | reviews_id | issueText | ...
表1包含用戶的評價。表2包含了某些評論的問題(投訴)。然而,一項審查並不一定需要有問題(如果沒有人報告)。查詢是:
SELECT reviews.*, issues.*
FROM reviews
LEFT JOIN issues
ON reviews.id=issues.reviews_id
WHERE (reviews.idVenue='6438' OR reviews.idVenue='6444' OR reviews.idVenue='7590')
ORDER BY 'reviews.updated' DESC
這工作完全如果回顧一個問題存在(ON子句是真的)。
但是,如果沒有現有的審查問題(ON子句是不正確的),然後reviews.id和issues.reviews_id是在$行,這是獲取與
if($result = $this -> mysqli -> query($qstr)){
while($row = $result->fetch_assoc()){
$temp[] = $row;
}
}
也都在失蹤$行中缺少其他問題列,因爲它們是NULL。缺少我的意思是,如果我在netbeans調試器中打印$ row或將$ row作爲監視變量,那麼它們不在那裏。它只是不顯示reviews.id和issues.reviews_id。
如果我直接在phpmyadmin中運行上面的查詢,那麼在沒有發現相關問題的情況下,它將返回值爲NULL的所有列。
所以我的問題是,爲什麼PHP忽略NULL值,並不返回他們在$行,但phpmyadmin呢?
謝謝!
您在這兩個表中都有相似的列名稱,而phpmyadmin會顯示兩列,而php會覆蓋第一個值和後面的值;所以如果你有review.id = 10那麼issue.id = null;你會得到一個名爲id = null的列; – ahmad
要解決此問題,請指定列名稱併爲具有相似名稱的列提供別名。 – ahmad
@ahmad:非常感謝!就是這樣!如果您將其作爲正式答案發布,我非常樂意接受它! –