I\'m trying to insert in array that looks like:
$prices = array(array(\'event_id\' => 1, \'event_price_type\' => 5, \'event_price\' => 5, \'event_price
$prices = array(
array('event_id' => 1, 'event_price_type' => 5, 'event_price' => 5, 'event_price_currency_id' => 1, 'event_price_info' => 'aaaa'),
array('event_id' => 1, 'event_price_type' => 8, 'event_price' => 7, 'event_price_currency_id' => 1, 'event_price_info' => 'bbbb'),
array('event_id' => 1, 'event_price_type' => 1, 'event_price' => 8, 'event_price_currency_id' => 1, 'event_price_info' => 'cccc')
);
i changed the typo, now I don't get an error but when i look at mysql there is only 1 row inserted:
event_id , price_type, price, price_currency, price_info;
0, 0, 0, 0, cccc;
where it has to be:
event_id , price_type, price, price_currency, price_info;
1, 5, 5, 1, aaaa;
1, 8, 7, 1, bbbb;
1, 1, 8, 1, cccc;
As Phantom said in his answer, You have a typo. There isevent_price_currency
key in your array and :event_price_currency_id
placeholder in prepare() statement. If fixing that doesn't work, try the following code and check the typo. Let me know if you face any problem.
try
{
$DBH->beginTransaction();
$STH = $DBH->prepare("INSERT INTO event_prices(event_id, event_price_type, event_price, event_price_currency_id, event_price_info ) values (?, ?, ?, ?, ?)");
foreach($prices as $price)
{
foreach($price as $row)
{
$data[] = $row;
}
$STH->execute($data);
$data = NULL;
}
$DBH->commit();
}
catch(PDOException $e)
{
echo 'Error ! ' . $e->getMessage();
die();
}
You have a typo. There is event_price_currency
key in your array and :event_price_currency_id
placeholder in prepare() statement.
Your query is expecting this parameter:
:event_price_currency_id
Which you're not supplying. You are, however, supplying this parameter:
'event_price_currency' => 1
One of these things is not like the other.