MYSQL - chaîne vide == 0 problème (mises à jour avec la ligne de clé primaire 0 au lieu d'insérer)

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

  •  30-09-2019
  •  | 
  •  

Question

En fait, ce déjà travaillé et je ne sais pas ce que j'ai changé pour que je tombe sur ce problème maintenant. J'ai essayé presque tout.

Le cas: J'ai la requête suivante. La variable $ DB-id est une chaîne vide si le contenu que je veux sauver est nouveau. Le MODULE_ID sur le terrain est ma clé primaire. Ce qui se passe est que cette requête met à jour toujours la ligne avec l'MODULE_ID => 0.

Le problème En passant une variable vide comme la clé primaire met à jour toujours la ligne 0 au lieu d'insérer un nouveau.

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

Quelqu'un a une idée comment je peux dire MYSQL pour créer une nouvelle ligne ??? Toute aide est très appréciée!!!! Merci beaucoup !!!

Saludos Sacha!

Était-ce utile?

La solution

Vous devrez peut-être définir votre champ de clé primaire à incrémentation automatique. Un exemple est ci-dessous.

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

Autres conseils

Je présume que vous devez donner UPDATE WHERE?
par exemple:

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

Ne pas me tenir à xD, juste une conjecture au premier coup d'œil.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top