2010-01-07 103 views
0

我從來沒有遇到過像這樣的錯誤。我在使用準備好的語句時,一直在努力解決問題,包括將表單剝離爲裸組件。MySQL查詢正在創建重複行

下面的代碼在執行時會創建一個重複的行。

$sql = "INSERT INTO inventory 
    VALUES ('','$stocknum','$year','$make','$model','$price','$body','$mile','$engine','$trans', 
    '$drive','$doors','$fuel','$vin','$des','$featured','$sale','$features','$safety','$airbags','$power', 
    '$exterior','$interior','','','','','')"; 
$insert = mysql_query($sql,$connection) or die(mysql_error()); 
$name = mysql_insert_id(); 

我無法圍繞爲什麼它會這樣做。

+1

是否有可能提交頁面被擊中兩次?檢查Web服務器日誌(或使用error_log()或只是發送自己的電子郵件,如果你沒有訪問日誌設施) – BojanG 2010-01-07 19:15:55

+0

我有同樣的問題:(任何想法?謝謝 – 2011-07-29 16:51:31

+0

發現我的問題 – 2011-07-29 17:34:49

回答

2

我在使用orm庫訪問數據庫時遇到了同樣的問題。也嘗試用mysql直接測試

經過將近一天在多個瀏覽器中測試並獲得不同結果後,我發現我使用Chrome瀏覽器的擴展(Webug)導致頁面回憶。禁用擴展後,它的工作

我測試了一些引起這個問題的擴展...在鉻:Webug。

希望它可以幫助

+0

我知道這是舊的,但事實證明這是問題。 – RedElement 2014-01-27 02:55:29

1

插入語句可能會被調用兩次。您是否添加了日誌記錄以確保此代碼僅運行一次?您是否搜索過以確保沒有其他代碼可以在其他地方添加庫存記錄?

+0

這是唯一的代碼,而不是在網頁上發佈的值我認爲它可能會循環有些原因我不知道,所以我在最後放置了一個die(),但它仍然是這樣。 – RedElement 2010-01-07 18:21:22

+0

這是一個很長的鏡頭,但是也許有一個觸發器在某處做INSERT? – 2010-01-07 18:33:25

+0

我在數據庫中添加了一個唯一的列。它仍然試圖運行兩次。這至少可以防止添加副本。 – RedElement 2010-01-07 18:33:44

0

當您以後查詢表時,您是隻從該表中選擇,還是將其加入到另一個表中?如果在連接表中有多個子記錄,則會得到多個結果。

您的代碼看起來對我來說是正確的,除非在頁面的其餘部分我沒有看到。

+0

這是現在唯一的桌子。至於代碼,我唯一沒有包括的是mysql連接的東西。 – RedElement 2010-01-07 18:37:20

1

庫存表中有多少列?第二行是第一行的完全重複嗎?我不知道PHP的數據庫接口,但我可以設想一個錯誤,如果給它的字段多於列的字段,它會嘗試創建多行。

編輯:MySQL文檔有點研究發現:

的INSERT語句使用價值 語法可以插入多行。要做 這個,包含多列 值的列表,每列值括在 括號內,並用逗號分隔。 示例:

INSERT INTO tbl_name(a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

括號內的每行值列表必須爲 。該 下面的語句是非法的,因爲 在列表中值的數目不 不匹配列名的數量:(A,B,C) VALUES 1,2,3,4

INSERT INTO tbl_name(, 5,6,7,8,9);

根據您的變量的內容,以及如何在PHP/MySQL的驅動程序處理這些變量(直接文本substition或?佔位符)正在執行的語句可能不會像你期望。在執行之前嘗試顯示$sql的值。

+0

我已檢查確保插入的值的數量與列數相匹配。同樣的錯誤。我認爲這與我的虛擬主機有關,因爲每個添加SQL數據的腳本都在做同樣的事情。 – RedElement 2010-01-10 02:28:39

-1

我想你有一個.htaccess文件正在向同一個腳本發出2個請求的問題。在插入時記錄帶有時間戳的消息。

+0

...我被拒絕了,因爲?很明顯,有兩個請求,而不是一個請求執行兩次sql。我們知道這是因爲調試消息打印一次。錯誤的.htaccess文件可能導致2個請求。這發生在前一天另一個論壇上的某個人。 – rick 2010-01-14 07:43:53

0

在沒有對這個我觀察任何真正明確的結論之一是,我想紅素是在正確的軌道上時,他說:「我認爲這是與我的網絡主機現在每個添加SQL數據的腳本都在做同樣的事情。

我有上面列出的問題,無法看到什麼在地球上造成這一點,直到我在不同的平臺上運行相同的代碼,它工作正常。我最初是在本地主機WAMP配置中進行測試,但是當我將代碼提升到真正的服務器時,它沒有任何問題。

因此,我建議如果其他人有這個問題,它是值得一試不同的服務器配置。