2011-12-10 22 views
1

我什至不能得到一個非常簡單的連接語句的工作。這裏是我的代碼:無法獲得任何MYSQL連接語句的工作

$query = "SELECT * FROM (Left) JOIN (Right) ON (Left.id=Right.id)"; 

$result = mysql_query($query); 
$num_rows = mysql_num_rows($result); 

echo "query: " . $query . "<br>result: " . $result . "<br>num rows: " . $num_rows; 

這裏就是它輸出:

警告:mysql_num_rows():提供的參數不是XXXX \ join.php一個有效的MySQL結果資源上線16

查詢:SELECT * FROM(左)JOIN(右)ON(Left.id = Right.id)

結果:

NUM行:

我用一個不同的主機在網站上完全相同的代碼,它工作正常,但我無法得到任何東西在這一個工作。在此之前,我從來沒有使用Join語句,所以我不確定我是否做錯了什麼,或者因爲我的主機禁用了某些內容,可能無法正常工作。我正在爲這個網站使用Ipower。

+3

是你的桌子真的命名爲左右?這些是保留字,可能必須放在[]中才能工作。並且不要選擇*總是定義字段名稱。 – xQbert

+0

這可能是連接問題(例如錯誤的用戶名/密碼)。你檢查過了嗎? –

回答

-2

您可以嘗試在「加入」之前添加「內部」。

這將是我的第一個猜測 - 原因 - 它實際上是一個內部連接。

第二次猜測會重寫如下。

SELECT * FROM (左),(右) 其中Left.id = Right.id

卸下從SQL完全聯接關鍵字。

我猜測'加入'關鍵字是造成問題。

+0

'JOIN'關鍵字如何導致問題? –

+1

'SELECT * FROM(Left),(Right)其中Left.id = Right.id'將不起作用(語法錯誤)逗號與INNER JOIN關鍵字相同。在JOIN子句中必須使用LEFT和RIGHT字樣。期。 –

0

如果你的表是真正命名爲左,右(認真考慮它們重命名),那麼下面的語法將工作:

SELECT * FROM `Left` JOIN `Right` ON `Left`.id=`Right`.id 

不過,我會強烈建議重命名這些表,因爲左和右是保留關鍵字和你將通過使用這些表名而不逃避它們來運行更多的語法問題。由於您使用左/右作爲表名,因此您當前撰寫的查詢在語法上不正確。

我真的不確定你用這些括號試圖做什麼。

(Left) JOIN (Right) 

意味着

LEFT JOIN RIGHT 

這是顯而易見的廢話。您必須在JOIN子句中轉義LEFT和RIGHT字樣。