MYSQL - 空字符串== 0问题(用主键0更新行而不是插入)

时间:2010-12-01 23:31:10

标签: mysql string zero

实际上这已经有效了,我不知道我改变了什么,所以我现在遇到这个问题。几乎尝试了一切。

案例:
我有以下查询。如果我要保存的内容是新的,则变量$ DB-id是一个空字符串。字段module_id是我的主键。会发生的是,此查询始终使用module_id =>更新行。 0

问题
将空变量作为主键传递总是更新第0行而不是插入新变量。

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

有没有人知道如何告诉MYSQL创建一个新行?任何帮助非常感谢!!!!非常感谢!!!

Saludos Sacha!

2 个答案:

答案 0 :(得分:1)

您可能需要将主键字段设置为自动增量。下面是一个例子。

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

答案 1 :(得分:-1)

我认为你需要给UPDATE一个WHERE吗? 例如:

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

不要误以为是xD,乍看之下只是猜测。