2005年8月15日 星期一

MySQL 的 Insert 問題

最近寫了一支 php + MySQL 的程式,但是遇到了一點問題無法解決。

每當我 Insert 一筆資料的時候,table 裡面會多兩筆資料,前面那筆正常,但後面那筆則全部欄位都是空白(Primary Key 除外)。

[[MORE]]
上網問了 Google,發現有這個問題的不只我一個,目前也都還沒得到正確的解答:


目前大概歸納出一個可能性,就是 Primary Key 為 Auto Increment 的時候,會出現這樣的現象。我把程式清理過了,應該不是邏輯上的錯誤。不知道有沒有大大可以為我釋疑?

6 則留言:

  1. 解決了嗎?
    從沒遇過這樣的題,我很好奇。
    (我是用 Perl+MySQL)

    回覆刪除
  2. CITYPIG:
    多謝您的關心,這個問題還是沒有解決。
    幸虧我寫的程式多半是我自己用而已,所以自己再麻煩一點砍掉多出來的 record 暫時還沒大礙。
    但是我已經把操作 Insert 的那段程式作最可能的簡化了:1.連到 MySQL 2. 從 GET或POST截出資料 3.進行Insert 4.中斷MySQL連線。

    中間沒有任何其他的邏輯判斷。但還是不行。

    回覆刪除
  3. 目前這件事的最新發展是,只有使用 Mozilla Firefox 才會 insert 空白資料,IE 則否。

    還是不知道為什麼。

    回覆刪除
  4. 原來是 Firefox 才會有,怪不得我最近用 IE 都沒發生。
    有幾個我想到的方法:
    1. 換掉 firefox 版本,使用舊版試試看,或用 opera 等其他核心的瀏覽器試試看是否有同樣情況,如果沒有,表示是 firefox 的問題。
    2. 改用舊版或其他版本的 MySQL。
    3. 試試看在 windows、Linux 上分別使用 firefox 會不會有同樣的情況。
    3. 使用 adodb,或其他的 bridge 看看。

    再不行就是判斷瀏覽器,遇到 firefox 時檢測是否插入多餘空白資料,是的話多做刪除動作。

    回覆刪除
  5. JOCOSN:

    我現在就是用你最後說的方法,檢查是否為 firefox 插入空白資料。
    但是很沒道理啊,怎麼是自己寫的程式才會這樣,其他套裝軟體(比如 phpMyAdmin 或 phpNuke) 就沒問題,是他們有使用 bridge 嗎?

    回覆刪除
  6. 我昨天才剛下載 Firefox 1.5 版測試,發現沒有你說的問題。
    會不會是你用的 PHP 語法本身有 bug? 我把圖貼上給你看一下。
    [img]http://fileserver2.jpghosting.com/images/firefox1_49ad19ba5f1040438ff99e840d334d42.jpg[/img]
    [img]http://fileserver2.jpghosting.com/images/firefox2_843313e1a90466e3ee1690836eee5a8c.jpg[/img]

    我申請這個 MySQL 網站
    http://www.badblock.com/
    利用我的電腦連上這個 MySQL 網站新增一筆資料,使用 IE6+Sp1,Windows 版的 Firefox 1.5 都沒問題,會不會是 Linux 版的 Firefox bug?

    我沒有檢查 phpMyAdmin 或 phpNuke,事實上這些套裝軟體蠻複雜的,像我申請國外的網站,不能使用中文,但是這些軟體在那些網站裝好後就會跑出中文出來,怪怪的巄東。

    回覆刪除