php循环增加

时间:2011-03-21 21:44:58

标签: php

$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"])

  

12345错误:重复输入“5”   关键'PRIMARY'

3 个答案:

答案 0 :(得分:3)

确保您的$ POST值是一个整数;默认情况下,我相信它会被转换为字符串。

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

编辑:

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

这应该只执行一次,因为你将两个比较变量设置为相等。绝对2倍检查您的代码。

答案 1 :(得分:1)

数据库错误表明Blank_ID是该表的主键,并且您已经在行中插入了5。主键的值只能在整个表中存在一次 - 禁止重复(如果允许重复,则不再是主键)。

如果你的while循环没有结束,我建议在循环开始之前抛出blankendnumber和blankstartnumber,确保你在那里得到正确的值。

答案 2 :(得分:0)

看起来它实际上运行正常,但在运行之前你可能没有整理你的数据库表。如果您的输出是:

123455 Error: Duplicate entry '5'...

然后,你有一个编程错误,因为5正在运行两次。相反,我认为您已经在空白表中有数据导致冲突。

编辑:要自动让MySQL正常处理重复键错误,可以使用ON DUPLICATE KEY子句来更新行。

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