2016-08-30 6 views
1

は、私はPHPがあります。foreachのPHPで挿入

if($post['for']){ 
    foreach($post['for'] as $value){ 
     $saveMsgObjFor->message_id = $save; 
     $saveMsgObjFor->object_type_id = 4; 
     $saveMsgObjFor->object_ref_id = $value; 
     $saveMsgObjFor->object_email = null; 
     $saveMsgObjFor->save($update); 
    } 
} 

をしかし、それはちょうど最初のループを保存します。二度のために、それがエラーを示しています。

Statement could not be executed (23000 - 1062 - Duplicate entry 
'33' for key 'PRIMARY' 

33は、フィールドmessage_object_idあり、それはauto incrementでした。私はあなたのコードから次の行を削除する必要が推測..

+0

おかげで、それは働きました!私はそれを受け入れることができるようにそれを答えにするだろう@ケニー - N –

答えて

2

hint in this answerに基づいて、message_object_idnullに明示的に設定する必要があるようです。 nullがデフォルトラウンド初めて、しかし、それはあなたが明示的に例えば、それをリセットする必要があるのでauto increment値に設定されますsave()後:

foreach($post['for'] as $value){ 
    $saveMsgObjFor->message_object_id = null; 
    $saveMsgObjFor->message_id = $save; 
0

私を助けてください。私は、Zend Frameworkに過度に慣れていないんだよ

$saveMsgObjFor->message_id = $save; 

いますが、割り当てしようとしているように見えますauto_incrementと同じ値です。これは行の識別子であり、一意でなければならないため動作しません。お役に立てれば!