PDO et liste de valeurs WHERE NOT IN
Bonjour à tous,
Je souhaite afficher aléatoirement des enregistrements d'une base de données dont l'id ne se trouve pas dans une liste (instruction NOT IN ('value1','value2'...) de SQL.
Hélas, si cela marche quand je le teste directement dans PHPmyAdmin, ça semble capoter quand je lance l'instruction depuis PDO... et là je sèche :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
// ramène la liste des enregistrements déjà traités :
$query = $bdd->prepare("
SELECT liste_id
FROM base
WHERE cle = :cle
");
$query->execute(array(
'cle' => $_COOKIE["id"]
));
$liste_enregistrements= $query->fetch();
$enregitsrements_proposes = "'" . implode("','", explode(",", $liste_enregistrements['liste_id'])) . "'"; // ici je convertis la chaîne de la base "id1,id2,id3" en 'id1','id2','id3' ça fonctionne bien.
// ramène une photo aléatoire qui ne soit pas déjà proposée :
$query2 = $bdd->prepare("
SELECT id, intro
FROM base
WHERE id NOT IN (:deja_proposees) // ici je passe la nouvelle liste en variable et je pense que le problème est ici
ORDER BY RAND()
LIMIT 1
");
$query2->execute(array(
'deja_proposees' => $enregitsrements_proposes
));
$id_nouveau = $query2->fetch();
$nouvel_id = $id_nouveau ['id']; |
Comme indiqué, la requête "query2" décomposée ainsi dans PhpMyAdmin fonctionne correctement :
Code:
1 2
|
SELECT id, intro FROM base WHERE id NOT IN ('id1','id2','id3') ORDER BY RAND() LIMIT 1 |
Y a t'il un souci lié à mon instruction PDO ? Une restriction ?
Merci pour vos lumières !