Reputation: 315
I am using PHP & PDO to insert results from an API into a mysql DB (innodb). Here is my code to do this:
$insertbrewery = $db->prepare('insert into breweries values(DEFAULT, :api_id, :name, :city, :state, DEFAULT)');
foreach ($data as $result) {
$insertbrewery->bindParam('api_id', $id);
$insertbrewery->bindParam('name', $result[brewery][name]);
$insertbrewery->bindParam('city', $result[brewery][locality]);
$insertbrewery->bindParam('state', $result[brewery][region]);
$insertbrewery->execute();
if ($insertbrewery) {
echo $insertbrewery->rowcount()." breweries successfully submitted.<br />";
} else {
echo "An error occurred with submitting the post to the database. Sorry.";
}
}
Upvotes: 2
Views: 291
Reputation: 10620
Your parameter names are :name
, :city
and :state
(leading colon included). Also, be sure to quote your keys in your arrays.
Change this:
$insertbrewery->bindParam('name', $result[brewery][name]);
$insertbrewery->bindParam('city', $result[brewery][locality]);
$insertbrewery->bindParam('state', $result[brewery][region]);
To this:
$insertbrewery->bindParam(':name', $result['brewery']['name']);
$insertbrewery->bindParam(':city', $result['brewery']['locality']);
$insertbrewery->bindParam(':state', $result['brewery']['region']);
Upvotes: 3
Reputation: 32262
Bad array syntax:
$insertbrewery->bindParam('name', $result[brewery][name]);
$insertbrewery->bindParam('city', $result[brewery][locality]);
$insertbrewery->bindParam('state', $result[brewery][region]);
Should be:
$insertbrewery->bindParam('name', $result['brewery']['name']);
$insertbrewery->bindParam('city', $result['brewery']['locality']);
$insertbrewery->bindParam('state', $result['brewery']['region']);
Upvotes: 1