Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

L'istruzione preparata non può essere eseguita più volte con valori interi

In caso di istruzioni preparate devi usare bindParam al di fuori del ciclo, di solito.

  1. bindParam è un solo passaggio
  2. l'impostazione delle variabili associate è un passaggio ripetibile (loop)
  3. devi eseguire execute per ogni ripetizione

Immagino, qualcosa del genere funzionerebbe:

$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();
}