"Traitez uniquement la première valeur du tableau MySQL IN"
P粉921165181
P粉921165181 2023-09-01 12:53:15
0
2
417

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 ( ? );

INLe 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 tableau IN

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 ?

P粉921165181
P粉921165181

répondre à tous (2)
P粉216203545

Essayez un code comme celui-ci :

public function mergeIDs($newID,$changeTheseIDs){ //(分别为整数和整数数组) $mergeSet = array_merge([$newID],$changeTheseIDs); $marks = array_fill(0, count($changeTheseIDs), '?'); $query = $this->connect()->prepare("UPDATE `log` SET `id` = ? WHERE `id` IN (". implode(',', $marks) .");"); $query->execute($mergeSet); }
    P粉446800329

    Vous en avez besoin d'un?pour chaque entier de la clause IN, pas un seul.

    public function mergeIDs($newID,$changeTheseIDs){ //(分别是整数和整数数组) $inPH = implode(',', array_fill(0, count($changeTheseIDs), '?')); $query = $this->connect()->prepare("UPDATE `log` SET `id` = ? WHERE `id` IN ( {$inPH} );"); $query->execute([$newID, ...$changeTheseIDs]); }
      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!