2014-09-21 104 views
2

我嘗試使用帶有jQuery自動完成的系統來提供一個列表視圖 這裏是我的PHP代碼,除了我找不到問題,我在控制檯中沒有錯誤,但我似乎無法獲得數據庫中的數據。它發現我沒有對應。PHP查詢哪裏可以找到

條件「其中」都是正確的,並檢查(我甚至直接嘗試SQL查詢到phpMyAdmin的,和它的作品,而不是通過PHP文件)

<?php 
try 
{ 
$bdd = new PDO('mysql:host=localhost;dbname=schoolby_fr', '*****', '*****'); 
} 
catch (Exception $e) 
{ 
    die('Erreur : ' . $e->getMessage()); 
} 
$term = "Malrau"; 
$pays = "France"; 
$dept = "Vosges"; 
$tipe = "Lycée"; 

$requete = $bdd->prepare('SELECT * FROM school WHERE s_pays="'.$pays.'" AND s_dept="'.$dept.'" AND s_type="'.$tipe.'" AND s_ecole LIKE :term'); 
$requete->execute(array('term' => '%'.$term.'%')); 

$array = array(); 

while($donnee = $requete->fetch()) 
{ 
array_push($array, $donnee['s_ecole']); 
} 

echo json_encode($array); 

?> 

編輯22/09/2014

我想告訴你,如果我主動回憶條件$pays$tipe,但是卻留下了$term$dept。 因爲它不適用於所有條件。

In Phpmyadmin

Via PHP in console

+0

因爲你的MySQL返回,默認情況下,當php/json期望UTF-8時,latin1編碼的記錄/字符串?嘗試將'; charset = utf8'添加到您的DSN。 – julp 2014-09-23 15:11:59

+0

你真是太好了,謝謝它適用於所有的條件! Magnifique :) – 2014-09-23 15:45:22

回答

0

,如果你通過取出變量和硬編碼值,也許你可以識別,如果它的變量

+0

我檢查變量,所以它們被直接記錄下來,或者它們被GET方法檢索到 – 2014-09-21 21:11:21

0

你應該準備查詢正確的方式簡化您的準備語句,無需循環,並始終打開錯誤模式。

<?php 
try{ 
    $bdd = new PDO('mysql:host=localhost;dbname=schoolby_fr', '*****', '*****'); 
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $term = "Malrau"; 
    $pays = "France"; 
    $dept = "Vosges"; 
    $tipe = "Lycée"; 

    $query = 'SELECT * 
       FROM school 
       WHERE s_pays= :pays 
        AND s_dept= :dept 
        AND s_type= :tipe 
        AND s_ecole LIKE :term'; 

    $requete = $bdd->prepare($query); 
    $requete->execute(array(':pays' => $pays, 
          ':dept' => $dept, 
          ':tipe' => $tipe, 
          ':term' => '%'.$term.'%', 
        )); 

    $donnees = $requete->fetchAll(); 
    //var_dump($donnees); 
    echo json_encode($array); 
} 
catch (PDOException $e){ 
    die('Erreur : ' . $e->getMessage()); 
} 
+0

我嘗試它並在echo中獲得「null」值。 – 2014-09-22 09:52:29