Вставка нескольких строк в 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 

Однако после вставки в мою таблицу db все поля всех строк принимают значение «2012» (значение последнего поля).

Я не понимаю, почему это происходит. Может ли кто-нибудь помочь мне отслеживать проблему? Спасибо вам большое за ваше время.

Вы используете неправильный метод:

 $itmstmt->bindParam($key, $val); 

Должно быть:

 $itmstmt->bindValue($key, $val); 

bindValue привязывает значение к параметру, тогда как bindParam связывает параметр с указанным именем переменной