我被我的查询困住了,我很确定这是因为引用。
我尝试过很多事情,".$id."
或'$id'
,但我仍然会犯同样的错误。
在Firebug中(在我的控制台中),这就是我得到的。 感谢。
Array
(
[0] => 42000
[1] => 1064
[2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE cat= '.2.' ORDER BY id' at line 1
)
1
错误就在这一行(在我的查询中):
$requete = "SELECT id, marque, cat FROM cars ORDER BY id WHERE cat= '.$id.' ORDER BY id";
代码:
<?php
header('Content-Type: application/json');
$o = new stdClass(); // on déclare un tableau associatif
// Connexion à la base de données
try {
$bdd = new PDO('mysql:host=localhost;dbname=', '', '');
} catch(Exception $e) {
exit('Impossible de se connecter à la base de données.');
}
// Listes liées
if(isset($_GET['go']) || isset($_GET['id_marque'])) {
$dropdown = array();
if(isset($_GET['go'])) {
// requête qui récupère les marques
$requete = "SELECT id, marque FROM cars ORDER BY id";
} else if(isset($_GET['id_marque'])) {
$id = htmlentities(intval($_GET['id_marque']));
// requête qui récupère les modeles selon la marque
$requete = "SELECT id, marque, cat FROM cars ORDER BY id WHERE cat= '.$id.' ORDER BY id";
}
// Exécution de la requête
$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
$count= $resultat->rowCount();
// Résultats
while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
// je remplis un tableau et mettant l'id en index (que ce soit pour les marques ou les modeles)
$dropdown[$donnees['id']][] = utf8_encode($donnees['id']);
}
// Envoi du résultat au success
$o->dropdown = $dropdown;
$o->count = $count;
}
// Autres liste
if(isset($_GET['go2'])) {
}
echo json_encode($o);
?>
答案 0 :(得分:1)
.
。ORDER BY
条款。将查询更改为:
"SELECT id, marque, cat FROM cars WHERE cat= '{$id}' ORDER BY id";
假设从你得到的输出中,$id
应该是一个整数;然后你可以使用:
"SELECT id, marque, cat FROM cars WHERE cat= {$id} ORDER BY id";
PS:如果您已经过滤了cat = $id
的结果,为什么要为结果选择该列?
答案 1 :(得分:0)
正确的方法是'".$id."'
,只有一个ORDER BY
$requete = "SELECT id, marque, cat FROM cars WHERE cat= '".$id."' ORDER BY id";
答案 2 :(得分:0)
您的ORDER BY
子句之前有一个冗余(和错误)WHERE
子句 - 只需删除它:
$requete = "SELECT id, marque, cat FROM cars WHERE cat='$id' ORDER BY id";