次のコードを使用しています。コードは動作しますが、私は(私はPDOとbindParamを使ってmysqlに配列を挿入するには?
$sql = "INSERT INTO qresults (instance, qid, result) VALUES (:an_array)";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':an_array', implode(',', $values),PDO::PARAM_STR);
$stmt->execute();
と、次の
$count = $dbh->exec("INSERT INTO qresults(instance, qid, result) VALUES ".implode (', ', $values));
を交換しますが、挿入はもう動作しないことがbindparam
try {
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
$stqid=array();
for ($i=0; $i<$array_count; $i++){
$stqid[$i][0]=$lastInsertValue;
$stqid[$i][1]=$qid[$i][0];
$stqid[$i][2]=$qid[$i][1];
}
$values = array();
foreach ($stqid as $rowValues) {
foreach ($rowValues as $key => $rowValue) {
$rowValues[$key] = $rowValues[$key];
}
$values[] = "(" . implode(', ', $rowValues) . ")";
}
$count = $dbh->exec("INSERT INTO qresults(instance, qid, result) VALUES ".implode (', ', $values));
$dbh = null;
}
catch(PDOException $e){
echo $e->getMessage();
}
を使用するように、それを変更したいです私はどんなエラーメッセージも得なかった)。
質問:私は間違っていますか?どうすればbindParamを使うようにコードを書き直すことができますか?
回答を更新していただきありがとうございます。今理解するのがはるかに簡単です:) – TryHarder
挿入する値の数が毎回異なる場合、これを行う方法はありますか? – TryHarder
ええ、必要に応じてクエリ文字列を生成し、生成したクエリのものと一致するパラメータをバインドするだけです – grifos