2013-12-19 113 views
0

我一個運行在MySQL這個問題涉及的領域空:MySQL查詢工作在MySQL,但葉在PHP

SELECT * 
FROM ROOM_TYPE RT 
LEFT JOIN RENT_CONTRACT RC ON RT.room_type_id = RC.room_type_id 
WHERE RT.homestead_id = 20; 

在MySQL它運行完美與我需要的結果。當我用PHP運行它時,它給了我一切,除了RT.room_type_id,它被返回給我爲空。

當我改變查詢,只給我那個領域我仍然在PHP中爲空。任何想法爲什麼?

SELECT RT.room_type_id 
FROM ROOM_TYPE RT 
LEFT JOIN RENT_CONTRACT RC ON RT.room_type_id = RC.room_type_id 
WHERE RT.homestead_id = 20; 

我的PHP,我忽略了其他項目只是顯示問題。

global $con;  
$qry = "SELECT RT.room_type_id FROM ROOM_TYPE RT LEFT JOIN RENT_CONTRACT RC ON RT.room_type_id = RC.room_type_id WHERE RT.homestead_id = 20"; 
$result = mysqli_query($con,$qry); 
return mysqli_fetch_assoc($result); 
+0

因此,返回值的'var_dump()'顯示null?或者你以後的'$ room_type_id = $ returned_data ['room_type_id'];'顯示爲空? –

+0

如果你在PHP上的原始代碼是'select *',問題是你有兩個字段'room_type_id',一個來自RT表(它有值,另一個來自RC表,因爲左連接可能爲空)發生的是PHP將使用空值重寫此字段。因此,用適當的別名將正確的字段放在您的查詢中。試試看,讓我知道,所以我可以把它作爲答案。 –

+0

豪爾赫,它看起來像你的答案是正確的。繼續並提交它,我會選擇它。謝謝大家! –

回答

0

你的測試查詢:

SELECT RT.room_type_id 
FROM ROOM_TYPE RT 
LEFT JOIN RENT_CONTRACT RC ON RT.room_type_id = RC.room_type_id 
WHERE RT.homestead_id = 20; 

相當於該簡化之一:

SELECT RT.room_type_id 
FROM ROOM_TYPE RT 
WHERE RT.homestead_id = 20; 

除了原點一個可以具有RT行的多次出現,如果RT-> RC匹配是不是一對一。但不同的價值集應該是一樣的。

因此,爲了調試,也許你可以嘗試在mysql和php中運行簡化的查詢,看看會發生什麼。你是否在運行mysql和php時運行在同一個數據庫上?