Szukam wielu wstawek przy użyciu PHP PDO.wstawianie PDO wsadowego wielu wierszy z symbolami zastępczymi
Najbliżej odpowiedź znalazłem jest to jeden
how-to-insert-an-array-into-a-single-mysql-prepared-statement
Jednak przykład ów dano zastosowań ?? zamiast prawdziwych symboli zastępczych.
Mam spojrzał na przykładach na stronie PHP doc dla posiadaczy miejsce
php.net pdo.prepared-statements
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);
Teraz powiedzmy, że chciałem, aby osiągnąć wyżej ale z tablicą
$valuesToInsert = array(
0 => array('name' => 'Robert', 'value' => 'some value'),
1 => array('name' -> 'Louise', 'value' => 'another value')
);
Co mam zrobić z PDO i wieloma wkładkami na transakcję?
Wyobrażam sobie, że zaczyna się od pętli?
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
foreach($valuesToInsert as $insertRow){
// now loop through each inner array to match binded values
foreach($insertRow as $column => value){
$stmt->bindParam(":{$column}", value);
}
}
$stmt->execute();
Jednakże powyższe nie działa, ale mam nadzieję, że pokaże im, co staramy się osiągnąć
trzeba wykonać wewnątrz pętli. w przeciwnym razie po prostu nadpisujesz związany parametr i kończysz wiązanie tylko wartości LAST. –
jednak jeśli wykonam, to będzie transakcji DB jeden wiersz na raz? Próbuję to zrobić w partii –
tak, ale jeśli próbujesz emulować rozszerzone mysql 'insert ... values (...), (...), (...)' wstaw składnię, to jest nie jak się do tego zabrać. musielibyście wstępnie zbudować instrukcję zapytania zawierającą symbol zastępczy dla każdego wstawianego zestawu wartości, przygotować go, powiązać parametry, a następnie wykonać. skończyłoby się robić tyle samo pracy, co wielokrotne uruchamianie pojedynczego przygotowanego wkładu. –