我的查询简单报价


Simple quote with my query

我的查询被困住了,我很确定这是因为引用.

我尝试了很多东西,".$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);
?>
  1. 如前所述,从查询中删除.
  2. 如前所述,您有两个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 ,为什么要选择该列作为结果?

正确的方法是'".$id."'并且只有一个ORDER BY

$requete = "SELECT id, marque, cat FROM cars WHERE cat= '".$id."' ORDER BY id";

您在WHERE子句之前有一个冗余(和错误的)ORDER BY子句 - 只需将其删除:

$requete = "SELECT id, marque, cat FROM cars WHERE cat='$id' ORDER BY id";