J'utilise la programmation PHP pour créer une instruction PDO.
L'instruction de prétraitement PDO est la suivante :
Mettre à jour `log` SET `id` = ? WHERE `id` IN ( ? );
IN
Le contenu des variables dans le tableau est des entiers.
Le premier ?
Le deuxième ?
est un tableau d'entiers, donc je les concatène dans la chaîne 1,2,3
, cette chaîne fonctionne généralement pour /code>tableau.
Le code complet est donc le suivant :
public function mergeIDs($newID,$change TheseIDs){ // (entier et tableau d'entiers, respectivement) $inSet = imploser(',',$change TheseIDs); $query = $this->connect()->prepare("UPDATE `log` SET `id` = ? WHERE `id` IN ( ? );"); $query->execute([$newID,$change TheseIDs]); }Le problème semble être que SQL ne traite que le premier ID entier inséré dans le tableau
IN
Tout identifiant correspondant à un entier dans le tableauIN
Si j'exécute le SQL dans l'outil SQL sur mon serveur comme ceci :
UPDATE `log` SET `id` = 5 WHERE `id` IN (1,2,3);
Ça fonctionne bien, je change tous les ID 1, 2 ou 3 en 5.
Mais ma version PDO ne change que 1 à 5, 2 et 3 restent les mêmes.
Des idées ?
Essayez un code comme celui-ci :
Vous en avez besoin d'un
?
pour chaque entier de la clause IN, pas un seul.