我想在阵列,看起来像插入时:错误:“无效的参数个数:参数没有被定义的”使用数组中PDO
$prices = array(array('event_id' => 1, 'event_price_type' => 5, 'event_price' => 5, 'event_price_currency' => 1, 'event_price_info' => 'aaaa'), array('event_id' => 1, 'event_price_type' => 8, 'event_price' => 7, 'event_price_currency' => 1, 'event_price_info' => 'bbbb'), array('event_id' => 1, 'event_price_type' => 1, 'event_price' => 8, 'event_price_currency' => 1, 'event_price_info' => 'cccc'));
//跟踪($价格);
我想用PDO但是我总是得到消息插入阵列到MySQL:
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in
(由
try{
$this->dbh->beginTransaction();
$stmt = $this->dbh->prepare("INSERT INTO event_prices(event_id, price_type, price, price_currency_id, price_info) VALUES(:event_id, :event_price_type, :event_price, :event_price_currency_id, :event_price_info)");
foreach($prices as $insertRow) {
// trace($insertRow);
// now loop through each inner array to match binded values
foreach($insertRow as $column => $value){
// echo "COMLOM WAARDE: {$column}, VALUE: {$value}<br/>";
$stmt->bindParam(":{$column}", $value);
}
}
// NOW DO EXECUTE
$stmt->execute();
$this->dbh->commit();
} catch (PDOException $e) {
echo 'Error ! '.$e->getMessage();
die();
}
您必须为每个$ insert行执行插入语句。而不是使用'$ stmt-> bindParam()'我会用'$ stmt->执行($的insertRow);'。你也必须像上面提到的那样修正错别字。 – VMai 2014-09-19 12:50:18