0
我想通過PHP PDO使用事務綁定插入多行。以下是我的代碼。用PHP PDO插入多行
$arrkeys = array_keys($this->postItem);
$itemqry = "INSERT INTO test_item (itemdate, flditmname, fieldtype, subscribe, id, year) VALUES (:itemdate, :flditmname, :fieldtype, :subscribe, :id, :year);" // dynamically generated
$itmstmt = $dbcon->prepare($itemqry);
for ($i=0; $i<$cnt; $i++){
foreach ($arrkeys as $key){
$val = $this->postItem[substr($key,1)][$i];
$itmstmt->bindParam($key, $val);
}
try {
$itmstmt->execute();
} catch (PDOException $e){
echo $e->getMessage();
}
}
我驗證值正確填充(用於綁定),如下所示:
echo $key."=".$val."<br>"; //echoed just before the bind.
:itemdate=2012-07-02 15:09:04
:flditmname=dccd
:fieldtype=2
:subscribe=X
:id=12345
:year=2012
:itemdate=2012-07-12 15:09:19
:flditmname=lkpok
:fieldtype=3
:subscribe=X
:id=12345
:year=2012
然而,在我的數據庫表中插入後,所有行的所有字段,取值爲「2012」 (最後一個字段的值)。
我不明白爲什麼會發生這種情況。任何人都可以幫我追蹤這個問題嗎?非常感謝您的寶貴時間。
'bindParam'把一個變量*的引用作爲參數,'bindValue'將*變量*的值作爲它的參數。你這樣做的方式,你給它多次引用同一個變量'$ val',這當然都會評估爲相同的值。 – DCoder 2012-07-26 16:03:20