簡體   English   中英

與空表的左連接使在 php 中的 null 上連接的列,但在 phpmyadmin 中正常工作

[英]Left join with empty table makes the column that is joined on null in php, but works normally in phpmyadmin

我有一個users和一個用戶userfollowers表。 他們都有一個user_id列。

userfollowers表可能是空的,或者還沒有users表中的用戶匹配,因此我使用left join

這是我的查詢:

SELECT * 
FROM users 
LEFT JOIN userfollowers ON users.user_id = userfollowers.user_id 
WHERE user_name = ?"

當我嘗試在我的 php 准備語句中執行此查詢時,它會正確返回所有列,除了users表中的user_id突然變為 NULL。

當我在 phpmyadmin 中嘗試此查詢時,它會按預期從users表中返回包括user_id在內的所有列。

有人可以告訴我發生了什么嗎?

在 PHP 中,數組中只能存在 1 個索引,因此后一列userfollowers.user_id覆蓋第一個值users.user_id 您需要列出列,為所有列使用別名,或使用數字索引(這將很難確定哪個值是哪個)。

如果應返回users的所有列,您可以執行以下操作:

SELECT u.*, uf.somecolumn
FROM users as u
LEFT JOIN userfollowers as uf using(user_id) 
WHERE user_name = ?

as u是表別名,允許您在引用表時使用較短的語法。 對列也可以這樣做。 如果您需要兩個user_id ,則使用原始查詢可以執行以下操作:

SELECT u.user_id as users_id, uf.user_id as userfollowers_userid 
FROM users as u
LEFT JOIN userfollowers as uf using(user_id)
WHERE user_name = ?

那么 PHP 將有$row['userfollowers_userid']$row['users_id']可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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