MYSQL - stringa vuota == 0 problema (aggiornamenti riga con chiave primaria 0 invece dell'inserto)

StackOverflow https://stackoverflow.com/questions/4330229

  •  30-09-2019
  •  | 
  •  

Domanda

in realtà questo già lavorato e non ho idea di quello che ho cambiato in modo che ho eseguito in questo problema ora. Provato quasi tutto.

Il caso:
Ho la seguente query. La variabile $ DB-id è una stringa vuota se il contenuto voglio salvare è nuovo. Il module_id campo è la mia chiave primaria. Quello che succede è che questa query aggiorna sempre la riga con il module_id => 0.

Il problema
Passando una variabile vuota come chiave primaria aggiorna sempre fila 0 invece di inserire uno nuovo.

$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']}'
                ");

Qualcuno ha un'idea di come posso dire a MySQL per creare una nuova riga ??? Qualsiasi aiuto è bene accetto!!!! Grazie mille !!!

Saludos Sacha!

È stato utile?

Soluzione

Potrebbe essere necessario impostare il campo chiave primaria di incremento automatico. Un esempio è qui sotto.

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

Altri suggerimenti

Vorrei assumere è necessario dare l'UPDATE WHERE?
ad esempio:

$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']}'
                ");

Non tenere me xD, solo una supposizione a prima vista.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top