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