2011-03-21 231 views
1
$blanknumber = $_POST["blankstartnumber"]; 

while ($blanknumber <= ($_POST["blankendnumber"])) 
{  

echo "$blanknumber"; 
$blankid = $blanknumber; 

$query = "INSERT INTO blank (Blank_ID) VALUES ('$blankid')"; 

mysql_query($query,$con); 
$blanknumber++; 

} 

所以這些值被添加到數據庫中。可以說,如果我的起始數字是1,結尾是5.它將所有這些值,但它仍然試圖添加更多的數據庫。我也嘗試添加IF語句。 if ($blanknumber != $_POST["blankendnumber"])PHP遞增while循環

12345 Error: Duplicate entry '5' for key 'PRIMARY'

+0

這是一個mysql錯誤。您正試圖添加一個包含現有主鍵的行。你的if語句是無用的,因爲你只是發佈發佈的id並將其與發佈的id進行比較。我認爲這比邏輯問題更合乎邏輯。 – Zakaria 2011-03-21 21:50:10

回答

3

確保您的$ POST值是一個整數;默認情況下,我相信它會被轉換爲一個字符串。

$_POST['varName'] = (int) $_POST['varName']; 

編輯:

$blanknumber = $_POST["blankstartnumber"]; 
while ($blanknumber <= ($_POST["blankendnumber"])) 

這應該只執行一次,因爲你設置這兩個對比參數相同。絕對2倍檢查你的代碼。

1

數據庫錯誤表示Blank_ID是該表的主鍵,並且您已將5插入該行。主鍵的值只能在整個表中存在一次 - 禁止複製(如果允許,則不再是主鍵)。

如果你的while循環沒有結束,我建議在循環開始之前將blankendnumber和blankstartnumber都拋出,確保你在那裏有正確的值。

0

看起來它實際上運行正常,但是在運行之前你可能沒有清理過你的db表。如果你的輸出是:

123455 Error: Duplicate entry '5'... 

然後,你會有一個編程錯誤,因爲5正在運行兩次。相反,我認爲你已經在空白表中有導致衝突的數據。

編輯:要自動讓MySQL正常處理重複鍵錯誤,可以使用ON DUPLICATE KEY子句更新該行。

INSERT INTO blank (Blank_ID) VALUES (5) ON DUPLICATE KEY UPDATE mod_date = NOW();