MYSQL - stringa vuota == 0 problema (aggiornamenti riga con chiave primaria 0 invece dell'inserto)
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!
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.