TerryG
TerryG

Reputation: 315

PHP PDO Insert Only Inserting First Character

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

Answers (2)

SamT
SamT

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

Sammitch
Sammitch

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

Related Questions