2013-12-17 82 views
0

我試圖運行此查詢時SQL錯誤:試圖連接表

$query = $conn->query("SELECT * FROM $table 
    LEFT JOIN vacatures ON bedrijven.id = vacatures.id 
    WHERE id = '$id' 
    AND bedrijfID = '$bedrijf_id'"); 

但由於某種原因失敗。我得到這個錯誤。

​​

當我離開JOIN部分時,查詢成功。這是爲什麼發生?

我正在使用PHP & PDO來獲取查詢。

謝謝。

編輯:我寫了查詢感謝給出的答案。這是工作:

$query = $conn->query("SELECT * FROM bedrijven 
    LEFT JOIN vacatures v ON bedrijven.id = v.bedrijfID WHERE v.bedrijfID = $bedrijf_id AND v.id = $id"); 

回答

2

你需要指定一個表或其他在WHERE id = '$id',即使他們在這種情況下,彼此相等。

你還需要確保你的LEFT JOIN包括$table

$query = $conn->query("SELECT * FROM $table 
    LEFT JOIN vacatures ON $table.id = vacatures.id 
    WHERE $table.id = '$id' 
    AND bedrijfID = '$bedrijf_id'"); 

或:

$query = $conn->query("SELECT * FROM bedrijven 
    LEFT JOIN vacatures ON bedrijven.id = vacatures.id 
    WHERE bedrijven.id = '$id' 
    AND bedrijfID = '$bedrijf_id'"); 
+0

不工作:/仍然得到相同的錯誤。 – Marciano

+0

已更新的答案。不過,我猜測你的變量可能會設置爲什麼。如果你在你的原始問題中澄清,這將有所幫助。 – Blazemonger

+0

我知道它實際上使用這個查詢: $ query = $ conn-> query(「SELECT * FROM bedrijven \t LEFT JOIN vacatures v ON bedrijven.id = v.bedrijfID WHERE v.bedrijfID = $ bedrijf_id AND v.id = $ id「); 感謝您的幫助! +1 PS:由於個人電腦問題導致的遲到答案... – Marciano

0

的 '$ ID' 將被視爲字符串不是variable.and你需要如果兩個表都有一個名爲id的字段,請將id指定爲table.id。

$query = $conn->query("SELECT * FROM $table LEFT JOIN vacatures ON bedrijven.id =  vacatures.id WHERE $table.id = $id AND bedrijfID = $bedrijf_id"); 
1

你的問題是不是超清晰,但如果你只是試圖做一個簡單連接,其中上表1 =表2 ID與id,然後下面的語句會工作。如果這就是你想要做的,那麼AND語句是多餘的。如果沒有明確定義的問題和明確定義的變量,很難知道你要做什麼。另外,使用如下所示的準備好的語句,而不是直接將變量插入到語句中。儘可能避免SELECT *。只選擇絕對必要的。

$query = $conn->prepare("SELECT * FROM bedrijven b 
    LEFT JOIN vacatures v 
    ON b.id = v.id 
    WHERE v.id = :id"); 
$query->bindValue(':id', $id); 
$query->execute(); 
+0

我知道這有點含糊不清,但這也幫助我自己寫了查詢,謝謝。 +1 – Marciano

+0

很高興能幫到你! – hyphen