以下代码应将数组中的每个键值对插入表中的数学列值。该脚本没有返回任何错误,但插入的行仅包含数组中的最后一个值
例如
array('one'=>1,'two'=>2,'three'=>3);
成功地将行插入到包含第一列、第二列和第三列的表中,但总共插入值 3。
$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);
}
最佳答案
忘掉bindParam
,只需使用execute
并将$array
的值传递给它:
$STH->execute($array);
或者,您可以完全删除命名参数以稍微简化您的代码:
$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));
关于PHP 生成动态 PDO 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12019826/