2013-12-17 101 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