Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

L'instruction préparée ne peut pas être exécutée plusieurs fois avec des valeurs entières

En cas d'instructions préparées, vous devez utiliser bindParam en dehors de la boucle, généralement.

  1. bindParam est une seule étape
  2. la définition des variables liées est une étape répétable (boucle)
  3. vous devez lancer execute pour chaque répétition

Je suppose que quelque chose comme ça fonctionnerait :

$stmt = $pdoDB->prepare("INSERT INTO mytab (col, key) VALUES (:col, :key)");

// bind params (by reference)
$stmt->bindParams(":col", $col, PDO::PARAM_STR); //bind variable $col
$stmt->bindParams(":key", $key, PDO::PARAM_INT); //bind variable $key

$values = ['here','are','some','values'];
foreach ($values as $i => $value) {
    $col = $value; //set col
    $key = $i; //set key
    $stmt->execute();
}