2010-12-01 103 views
0

實際上,這已經工作,我不知道我已經改變,所以我現在遇到這個問題。嘗試幾乎所有的東西。MYSQL - 空字符串== 0問題(更新主鍵0而不是插入行)

案例:
我有以下查詢。如果我想保存的內容是新的,變量$ DB-id是一個空字符串。該字段module_id是我的主鍵。所發生的是,此查詢總是與模塊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!

+0

如果主鍵字段有一個auto_increment? – 2010-12-01 23:50:56

回答

1

您可能需要將您的主鍵字段設置爲自動增量。下面是一個例子。

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

OH MY GOSH ...我失去了自動增量...我無法相信......把我的頭撞在桌子上......我不知道這是怎麼發生的。但實際上這是關鍵。 – Bosh 2010-12-01 23:58:33

-1

我會假設你需要給更新一個地方?
如:

$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,只是一個猜測。

+0

這會產生一個錯誤:你的mysql語法錯誤...它不接受where子句中的空字符串... THX ;-) – Bosh 2010-12-01 23:54:18

相關問題