以下代码应将数组中的每个键值对插入到表中的数学列值中。该脚本不返回错误,但插入的行仅包含数组中的最后一个值
例如
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:
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));