PHP generate dynamic PDO insert
mysql, pdo, php
Solution
Forget about `bindParam`, just use `execute` and pass it the values of `$array`:
$STH->execute($array);
Alternatively, you could scratch the named parameters altogether to simplify your code a little:
$columnString = implode(',', array_keys($array));
$valueString = implode(',', array_fill(0, count($array), '?'));
$STH = $core->dbh->prepare("INSERT INTO table ({$columnString}) VALUES ({$valueString})");
$STH->execute(array_values($array));
Problem
The following code should insert each key-value pair in an array into a mathing column-value in a table. The script returns no errors but the the inserted row contains only the last value in the array E.g. ``` array('one'=>1,'two'=>2,'three'=>3); ``` insert the row successfully in a table with columns one, two and three but insert the value 3 in all. ``` $columns = array(); $bind = ''; foreach($array as $key => $value){ $columns[] = $key; } $columnString = implode($columns,','); $valueString = implode($columns,',:'); $valueString = ':' . $valueString; $core = core::getInstance(); $STH = $core->dbh->prepare("INSERT INTO table (" . $columnString . ") VALUES (" . $valueString . ")"); foreach($array as $key => $value){ $STH->bindParam(':' . $key,$value); } ```