Bonjour,
Voilà, je rencontre un petit problème avec mon code.
J'ai mes variables $numero_affection = array(1,2) , $role (expert, agent)
J'aimerais récupérer (en SQL) toutes les personnes qui sont affecter aux numéros d'affectation ci-dessus et qui ont comme role expert et agent
Dans un premier temps j'ai fait la requête avec un implode pour seulement le numéro d'affectation
<?php
$numero_affectation = array(1,2);
$marqueur = array_fill(0, count($numero_affectation), '?');
$stmt = $conn->prepare("SELECT * FROM users WHERE num_affect IN (".implode(',', $marqueur).") ");
$stmt->execute($numero_affectation);
Mais j'aimerais pouvoir faire la même chose en ajoutant le role , comme par exemple
<?php
$numero_affectation = array(1,2);
$role= array('expert','agent');
$marqueur1 = array_fill(0, count($numero_affectation), '?');
$marqueur2 = array_fill(0, count($role), '?');
$stmt = $conn->prepare("SELECT * FROM users WHERE num_affect IN (".implode(',', $marqueur1).") AND role IN (".implode(',', $marqueur2).") ");
$stmt->execute($numero_affectation, $role);
Quand je lance le premier code ( celui qui est juste avec le numéro d'affectation) j'arrive à recupérer les utilisateurs mais dès que je rajoute le role j'ai des erreurs et cela m'affiche :
Warning: PDOStatement::execute() expects at most 1 parameter, 2 given
Merci de bien votre aide
normal :)
Que te dit l'erreur ?
Attention: PDOStatement::execute() attends 1 paramètre, 2 transmis...
tu captes ?
$stmt->execute($numero_affectation, $role);
c'est comme faire :
$stmt->execute(array(1,2), array('expert','agent'));
ici tu transmet 2 tableaux.
Solution :
$stmt->execute(array_merge($numero_affectation, $role));
Alors attention :
array_merge va reindéxer toutes tes clés... (bon ici on s'en fiche mais attention quand meme... c'est bon a savoir).
si tu veux juste ajouter 2 tableaux en gardant leurs index respectif, tu peux utiliser "+" (oui tu peux additionner des tableaux)
et si les 2 tableaux se partagent une clé commune, $ar1 + $ar2 c'est $ar2 qui va overrider la clé du $ar1