PHP PDO를 통해 transaction-bind를 사용하여 여러 행을 삽입하려고합니다. 아래는 제 코드입니다.PHP PDO로 여러 행 삽입
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'복용 :
$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();
}
}
나는 값이 다음과 같이 (바인딩에 대해) 제대로 채우지 확인 (마지막 필드의 값).
왜 이런 일이 발생하는지 전혀 알 수 없습니다. 아무도 내가 문제를 추적하도록 도울 수 있습니까? 시간 내 주셔서 대단히 감사합니다.
에 매개 변수를 결합하는 반면, 'bindParam'은 변수에 대한 참조를 인자로 취합니다.'bindValue'는 변수의 값을 인수로 취합니다. 당신이했던 것처럼, 동일한 변수'$ val'에 여러 참조를주었습니다. 물론 이것은 모두 같은 값으로 평가됩니다. – DCoder