2014-03-31 69 views
1

我卡住了我的查詢的球員,我很確定這是因爲報價。簡單的報價與我的查詢

我嘗試了很多東西,".$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

將'WHERE cat ='。$ id.''更改爲'WHERE cat ='{$ id}'' – hjpotter92

+1

您有2個訂單。不工作 –

+0

我很愚蠢,我沒有看到我有兩個ORDER BY ...那麼報價怎麼樣,在查詢中放置一個變量的正確方法是什麼? –

回答

1
  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,你爲什麼會選擇結果該列?

0

正確的方法是'".$id."'和只有一個ORDER BY

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

你哈已經冗餘(和錯誤的)你WHERE子句前ORDER BY條款 - 只是將其刪除:

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