2010-12-01 14 views
0

実際には既にこれが働いていて、何が変更されたのかわからないので、今この問題にぶつかります。ほとんどすべてを試しました。MYSQL - 空文字列== 0問題:(挿入の代わりに主キー0の行を更新する)

ケース:
次のクエリがあります。変数$ 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!

+0

プライマリキーフィールドにauto_increment? –

答えて

1

プライマリキーフィールドを自動インクリメントに設定する必要がある場合があります。以下に例を示します。

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

オハイオ州ゴスホー...私は自動インクリメントを失います...私はそれを信じることができません...テーブルの上で私の頭をスラミング...私はそれがどうなったのか分かりません。しかし、実際それがポイントでした。 – Bosh

+0

私は笑顔ではありません...しかし、実際には私が見たことがない最も簡単な間違いでした。 – Bosh

+0

Uhm、それは私の間違いではないように見える...ちょうどGithubを見て、誰がそれをしたのか見た;-)復活!!!!どのように考えていない...しかし、私は彼に戻ってそれを与える... THX! ; -P – Bosh

-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

関連する問題