Ik moet verschillende rijen in de database plaatsen. De waarden van deze rijen staan in een array. Hoe kan ik een prepared statement meerdere keren gebruiken, met bind_param? Een stukje code dat volgens mij zo niet werkt:
<?php
$comsetting = $db_local->prepare('INSERT INTO settings (id,name,value) VALUES ('.$companyID.',?,?)');
$comsetting->bind_param('ss',$key,$value);
foreach($setting as $key => $value){
$comsetting->execute();
}
?>
Alleen de eerste waarden van $setting worden in de database opgenomen.
De '$setting' array bevatten wel meerdere waarden. Waarom worden niet alle keys en values ge'execute'?

<?php
$comsetting = $db_local->prepare('INSERT INTO settings (id,name,value) VALUES ('.$companyID.',?,?)');
foreach($setting as $key => $value){
$comsetting->bind_param('ss',$key,$value);
    $comsetting->execute();
}
?>


Dat was ook mijn eerste gedachte, echter werkt dat niet. De lus wordt wel goed uitgevoerd, in totaal 6 keer, alleen wordt de execute functie maar 1 keer succesvol gezien. Waarom? Deze constructie moet toch kunnen?

[size=xsmall]Toevoeging op 23/08/2012 14:03:26:[/size]

Opgelost. In de database was geen auto_increment waarde ingegeven.
Je zou het eens zo kunnen proberen:

<?php
$comsetting = $db_local->prepare('INSERT INTO settings (id,name,value) VALUES ('.$companyID.',?,?)');
foreach($setting as $key => $value){
$comsetting->bind_param('ss',$key,$value);
    if( !$comsetting->execute() ){
      echo mysqli_error ( $link );
      break;
    }
}
?>


De $link is de connection handle die je kreeg toen je connect naar de database kreeg,

Reageren