Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Vorbereitete Anweisung kann nicht mehrfach mit ganzzahligen Werten ausgeführt werden

Bei vorbereiteten Anweisungen müssen Sie bindParam verwenden normalerweise außerhalb der Schleife.

  1. bindParam ist ein einzelner Schritt
  2. Das Setzen von gebundenen Variablen ist ein wiederholbarer Schritt (Schleife)
  3. Sie müssen execute ausführen für jede Wiederholung

Ich denke, so etwas würde funktionieren:

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