2015-11-30 2 views
5

Ich verwende ON DUPLICATE UPDATE auf meine Abfrage, einige der Ergebnisse nicht gespeichert. Ich habe alles Mögliche versucht, aber diese bleiben immer gleich. Hier ist das Datenbankbild.ON DUPLICATE UPDATE funktioniert nicht mit irgendeiner Zeile

enter image description here

Die NULL, ist die Zeile, die nicht erfolgreich gespeichert hat; Das Ergebnis sollte 1 statt NULL sein.

if($remark){ 
$query3 = "INSERT INTO `audit_section_remarkrecord` SET remark = '$remark', form_details_subquestion_id = '$form_details_subquestion_id', form_details_section_id = '$form_details_section_id', audit_section_no = '$audit_no' ON DUPLICATE KEY UPDATE 
form_details_section_id = '$form_details_section_id' , remark = '$remark'"; 
$result3 = $db->query($query3); 

$query4 = "UPDATE `remarkrecord_update_details` SET form_details_section_id = '$form_details_section_id', userlog = '$user_staff', ipaddress = '$ip' WHERE form_details_subquestion_id = '$form_details_subquestion_id' AND audit_section_no = '$audit_no' "; 
$result4 = $db->query($query4); 
}else{ 
} 

} 

Tabellenstruktur

enter image description here

+0

Können Sie einige Werte für die Parameter, die funktionieren, und einige, die nicht funktionieren. Es wäre hilfreich, eine Stichprobe der Werte zu sehen. –

+0

@devlincarnate Hallo Bruder, kannst du mich sonst noch wissen lassen, was ich dir zeigen kann? Ich verstehe nicht, welche Werte für die Parameter, die Sie meinen :) – Andrew

+0

Beitrag Variablenwert, der nicht funktioniert auch post Tabellenstruktur – rocky

Antwort

2

Versuchen Sie, eine der Spalten zu ändern Sie Wert auf Primärschlüssel eingefügt werden oder UNIQUE-Einschränkung auf die Spalte hinzuzufügen.

ALTER TABLE audit_section_remarkrecord ADD UNIQUE KEY (your column); 

Da es derzeit nur ein eindeutiger Schlüssel auf dem Primärschlüssel, ein Auto-Inkrement, gehen zu müssen, Sie Schwierigkeiten einen eindeutigen Schlüssel Zusammenstoß auf einer insert on duplicate key update (IODKU). Erzeugung Daher einige andere eindeutigen Schlüssel Bedürfnisse erstellt werden (sogar ein zusammengesetztes), das den Zusammenstoß eines eindeutigen Schlüssels auslöst und IODKU erlaubt, wie erwartet zu arbeiten.

+0

Wie ich bereits diese frühere Zeit tun. – Andrew

+0

ALTER TABLE audit_section_remarkrecord HINZUFÜGEN EINZIGARTIG (form_details_subquestion_id, audit_section_no); – Andrew

+2

Wenn Sie ALTER TABLE verwenden audit_section_remarkrecord ADD UNIQUE (id); , dann sollte Ihre Abfrage INSERT INTO Tabellenname SET ID = "$ ID", ... ON DUPLICATE .. sein. – Abhijith

Verwandte Themen