Bon en suivant le conseil de moogli en utilisant une requête via client sql, j'ai constaté une première erreur, pas simple à trouvé
quand on fait une requête avec un LIKE et d'autre condition il faut mettre le LIKE en dernier.
ne pas faire :
$query = 'SELECT *'
. ' FROM source'
. ' WHERE nom LIKE :keyword OR LOWER(:keyworddirect)'
. ' AND sexe=? OR sexe=? '
. ' LIMIT 10';
$select = $db->prepare($query);
$select->bindValue(':keyword', '%'.$queryString.'%', PDO::PARAM_STR);
$select->bindValue(':keyworddirect', $queryString , PDO::PARAM_STR);
$select->bindValue(3, 'param1' , PDO::PARAM_STR);
$select->bindValue(4, 'param2', PDO::PARAM_STR);
$select->execute();
mais plutôt, bien que c'est pas encore bon puisque l'on ne peut pas non plus mélanger les paramètres anonymes (syntaxe ?) et nommés (:nom) dans une requête préparée
$query = 'SELECT *'
. ' FROM sources'
. ' WHERE sexe IN (?,?) '
. ' AND nom LIKE :keyword OR LOWER(:keyworddirect)'
. ' LIMIT 10';
$select = $db->prepare($query);
$select->bindValue(1, 'param1' , PDO::PARAM_STR);
$select->bindValue(2, 'param2', PDO::PARAM_STR);
$select->bindValue(':keyword', '%'.$queryString.'%', PDO::PARAM_STR);
$select->bindValue(':keyworddirect', $queryString , PDO::PARAM_STR);
$select->execute();
le bon code est celui-ci
$query = 'SELECT *'
. ' FROM source'
. ' WHERE sexe IN (:keyfb, :keyfs)'
. ' AND nom LIKE :keyword OR LOWER(:keyworddirect)'
. ' LIMIT 10;';
$select = $db->prepare($query);
$select->bindValue(':keyword', '%'.$queryString.'%', PDO::PARAM_STR);
$select->bindValue(':keyworddirect', $queryString , PDO::PARAM_STR);
$select->bindValue(':keyfb', 'fb' , PDO::PARAM_STR);
$select->bindValue(':keyfs', "fs" , PDO::PARAM_STR);
$select->execute();
merci à vous j 'espéré que ça aidera quelqu’un, si il rencontre le même problème que moi
Dog