2010-12-01 4 views
0

eigentlich hat dies bereits funktioniert und ich habe keine Ahnung, was ich geändert habe, so dass ich jetzt auf dieses Problem stoßen. Versucht fast alles.MYSQL - leere Zeichenfolge == 0 Problem (aktualisiert Zeile mit Primärschlüssel 0 anstelle von einfügen)

Der Fall:
Ich habe die folgende Abfrage. Die Variable $ DB-id ist eine leere Zeichenfolge, wenn der Inhalt, den ich speichern möchte, neu ist. Das Feld module_id ist mein Primärschlüssel. Was passiert, ist, dass diese Abfrage immer aktualisiert die Zeile mit dem module_id => 0

Das Problem
eine leere Variable als Primärschlüssel Passing immer aktualisiert Zeile 0 statt einen neuen einzufügen.

$this->db->query("INSERT INTO modules_text 
           ( 
           module_id, 
           module_content, 
           module_page_idx, 
           module_post_id 
           ) 
        VALUES  (
           '{$DB_id}', 
           '{$content['text']}', 
           '{$content['idx']}', 
           '{$post_id}' 
           ) 
        ON DUPLICATE KEY 
        UPDATE  module_content = '{$content['text']}', 
           module_page_idx = '{$content['idx']}' 
       "); 

Hat jemand eine Idee, wie ich MYSQL eine neue Zeile erstellen kann ??? Jede Hilfe wird sehr geschätzt !!!! Vielen Dank!!!

Saludos Sacha!

+0

Wenn das Primärschlüsselfeld ein auto_increment? –

Antwort

1

Möglicherweise müssen Sie das Primärschlüsselfeld auf automatisch erhöhen setzen. Ein Beispiel ist unten.

CREATE TABLE tablename (
id MEDIUMINT NOT NULL AUTO_INCREMENT, 
name CHAR(30) NOT NULL, 
PRIMARY KEY (id)) 
+0

OH MY GOSH ... ICH VERLORSCHTE DIE AUTO INKREMENT ... Ich kann es nicht glauben ... Den Kopf auf den Tisch schlagen ... Ich habe keine Ahnung, wie das passiert ist. Aber genau darum ging es. – Bosh

+0

ICH BIN FEEEEELING SOOOOOO DUMM JETZT ... Aber wirklich war es der einfachste Fehler, den ich nie betrachtete. – Bosh

+0

Uhm, sieht so aus als wäre es nicht mein Fehler ... hab nur Github angeschaut und gesehen, wer es gemacht hat ;-) REVENGE !!!! Keine Ahnung, wie ... aber ich werde ihm das zurück geben ... THX! ;-P – Bosh

-1

Ich würde annehmen, dass Sie dem UPDATE ein WO geben müssen?
zB:

$this->db->query("INSERT INTO modules_text 
           ( 
           module_id, 
           module_content, 
           module_page_idx, 
           module_post_id 
           ) 
        VALUES  (
           '{$DB_id}', 
           '{$content['text']}', 
           '{$content['idx']}', 
           '{$post_id}' 
           ) 
        ON DUPLICATE KEY 
        UPDATE  `module_content` = '{$content['text']}', 
           `module_page_idx` = '{$content['idx']}' 
        WHERE 
           `module_id` = '{$content['id']}' 
       "); 

Halten Sie mich nicht daran xD, nur eine Vermutung auf den ersten Blick.

+0

Das ist ein Fehler: Sie haben einen Fehler in Ihrer MySQL-Syntax ... Es akzeptiert keine leere Zeichenfolge in der Where-Klausel ... THX trotzdem ;-) – Bosh

Verwandte Themen