Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Przygotowana instrukcja nie może być wielokrotnie wykonywana z wartościami całkowitymi

W przypadku przygotowanych wyciągów musisz użyć bindParam zwykle poza pętlą.

  1. bindParam to jeden krok
  2. ustawianie powiązanych zmiennych jest powtarzalnym krokiem (pętlą)
  3. musisz uruchomić execute dla każdego powtórzenia

Myślę, że coś takiego by zadziałało:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:odpowiednik kaskadowej tabeli upuszczania?

  2. Jak rzutować podciąg SQL na dziesiętny?

  3. Asynchroniczne wywołanie procedury składowanej programu SQL Server w języku C#

  4. Pobieranie wieloetapowej operacji generowało błędy. Sprawdź każdą wartość statusu. błąd podczas używania ADO z serwerem SQL 2008

  5. Liczenie wierszy dla wszystkich tabel jednocześnie