语法错误或访问冲突:1064,尝试使用左连接

时间:2015-10-29 17:23:27

标签: php mysql sql

我正在尝试在MySQL查询中进行连接。我需要加入各种表来显示一些信息,所以我尝试使用这段代码:

$q = intval($_GET['q']);
try {
    $results = $db->query('select empresas.nombreHotel,
        ubiacion.ubiacion,
        empresas.idUbicacion,
        ubiacion.idUbicacion
        from empresas where idRangoPrecio="' . $q .'",
        left join ubiacion
        on empresas.idUbicacion=ubiacion.ubiacion' );

} catch(Exception $e){
    echo $e->getMessage();
    die();
}
$empresasLeyenda = $results->fetchAll(PDO::FETCH_ASSOC);

但我一直得到同样的错误:

  

SQLSTATE [42000]:语法错误或访问冲突:1064您有   SQL语法错误;查看与您的手册相对应的手册   MySQL服务器版本的正确语法使用附近'离开加入   ubiacion on empresas.idUbicacion = ubiacion.ubiacion'在第5行

3 个答案:

答案 0 :(得分:3)

这是

SELECT ..
FROM ...
JOIN ...
WHERE ...

您的joinwhere条款已被撤消。

答案 1 :(得分:1)

您的查询中还有一个,,而且您的陈述的顺序也不正确。请使用:

$q = intval($_GET['q']);

try {
    $results = $db->query('select empresas.nombreHotel,
        ubiacion.ubiacion,
        empresas.idUbicacion,
        ubiacion.idUbicacion
        from empresas
        left join ubiacion
        on empresas.idUbicacion=ubiacion.ubiacion
        where idRangoPrecio="' . $q .'"' );

} catch(Exception $e){
    echo $e->getMessage();
    die();
}
$empresasLeyenda = $results->fetchAll(PDO::FETCH_ASSOC);

答案 2 :(得分:0)

我知道这是个人偏好,但我发现为每个表分配别名更容易,并在引用字段时使用别名。如前所述,你的where子句位于rwong地方,也许以下可能是合适的: -

$sql='select 
    e.`nombreHotel`,
    e.`idUbicacion`,
    u.`ubiacion`,
    u.`idUbicacion`
    from `empresas` e
    left join `ubiacion`u on e.`idUbicacion`=u.`idUbicacion`
    where e.`idRangoPrecio`="' . $q .'"';