Skip to content

Commit 6587334

Browse files
authored
Daten aus Array in DB schreiben
1 parent c2a3989 commit 6587334

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

implement-approach/21_pdo.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,71 @@ echo $stmt->rowCount();
190190
~~~
191191

192192

193+
### [Daten aus Array in DB schreiben](#insert-from-array)
194+
{: #insert-from-array}
195+
196+
Um Daten mittels Prepared Statements aus einem Array in die DB zu schreiben, kann man folgenden Ansatz nutzen. Verwendet wird dazu wieder das oben erstellte PDO-Objekt `$pdo` mit der DB-Verbindung.
197+
198+
~~~php
199+
$pdo->query("
200+
CREATE TEMPORARY TABLE temp (
201+
id INT NOT NULL AUTO_INCREMENT,
202+
vorname VARCHAR(255) NOT NULL,
203+
nachname VARCHAR(255) NOT NULL,
204+
PRIMARY KEY (id)
205+
)
206+
");
207+
208+
// unser Daten-Array
209+
$aData = [
210+
['vorname' => 'Hans', 'nachname' => 'Maier'],
211+
['vorname' => 'Peter', 'nachname' => 'Müller'],
212+
['vorname' => 'Robert', 'nachname' => 'Kinz']
213+
];
214+
215+
// in DB schreiben
216+
$sql = "
217+
INSERT INTO temp (" . implode(", ", array_keys($aData[0])) . ")
218+
VALUES (" . implode(", ", array_fill(0, count($aData[0]), "?")) . ")
219+
";
220+
$stmt = $pdo->prepare($sql);
221+
222+
foreach ($aData as $row) {
223+
$stmt->execute(array_values($row));
224+
}
225+
226+
// Test - Daten wieder ausgeben
227+
$result = $pdo->query("SELECT id, vorname, nachname FROM temp");
228+
print_r( $result->fetchAll(PDO::FETCH_ASSOC) );
229+
/*
230+
Array
231+
(
232+
[0] => Array
233+
(
234+
[id] => 1
235+
[vorname] => Hans
236+
[nachname] => Maier
237+
)
238+
239+
[1] => Array
240+
(
241+
[id] => 2
242+
[vorname] => Peter
243+
[nachname] => Müller
244+
)
245+
246+
[2] => Array
247+
(
248+
[id] => 3
249+
[vorname] => Robert
250+
[nachname] => Kinz
251+
)
252+
253+
)
254+
*/
255+
~~~
256+
257+
193258
## [Querverweise](#links)
194259
{: #links}
195260

0 commit comments

Comments
 (0)