2016-08-30 6 views
1

Ich habe PHP:Insert in 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); 
    } 
} 

Aber es direkt mit der ersten Schleife speichern. Für zweimal, zeigen sie Fehler:

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

33 Feld ist message_object_id und es war auto increment. Helfen Sie mir, bitte ..

+0

Danke, es hat funktioniert! Würde es als Antwort machen, damit ich es @ KenY-N akzeptieren kann –

Antwort

2

Basierend auf der hint in this answer scheint es, dass Sie die message_object_id explizit auf null festlegen müssen. Beim ersten Mal wird standardmäßig null, aber dann nach den save() es den auto increment Wert gesetzt wird, so dass Sie explizit zurücksetzen müssen, zum Beispiel:

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

Ich nehme an, Sie sollten die folgende Zeile aus dem Code entfernen:

$saveMsgObjFor->message_id = $save; 

ich mit dem Zend Framework nicht allzu vertraut bin, aber es sieht aus wie Sie versuchen, die zuweisen Gleicher Wert für ein auto_increment, das nicht funktioniert, da es die Kennung der Zeile ist und eindeutig sein muss. Hoffe das hilft!