Я пытаюсь использовать систему с автозаполнением jQuery для предоставления списка
Вот мой код 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
,
Потому что это не работает со всеми условиями.
если вы упростите свое утверждение prepare, вынимая переменные и жестко кодируя значения, возможно, вы сможете определить, являются ли они переменными
Вы должны правильно подготовить запрос, не нужно зацикливаться и всегда включать режим ошибок.
<?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());
}