我正在尝试在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行
答案 0 :(得分:3)
这是
SELECT ..
FROM ...
JOIN ...
WHERE ...
您的join
和where
条款已被撤消。
答案 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 .'"';