我正在使用下面的代碼。代碼工作,但我想,這樣使用它來改變它bindparam如何使用PDO和bindParam將數組插入到mysql中?
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();
}
我更換了以下
$count = $dbh->exec("INSERT INTO qresults(instance, qid, result) VALUES ".implode (', ', $values));
與
$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();
但是插入不工作了(儘管我沒有收到任何錯誤信息)。
問題:我做錯了什麼?我怎樣才能重寫代碼來使用bindParam?
謝謝你更新你的答案。現在理解起來要容易得多:) – TryHarder 2012-03-25 06:12:52
當插入值的數量每次都不相同時,有沒有辦法做到這一點? – TryHarder 2012-03-25 08:14:06
是的,你只需根據你的需要生成你的查詢字符串,並綁定與你生成的查詢匹配的參數 – grifos 2012-03-26 18:30:25