PHP / MYSQL-数字操作停止在零

时间:2013-03-05 15:23:30

标签: php mysql loops while-loop

我觉得有一个简单的解决方案,但我无法在任何地方找到它。

我有一个while()循环,在每个循环开始时,我从一个从MYSQL数据库中得到的数字中减去1。但由于某种原因,它在0处停止。如果从数据库中提取的值为0或负数,我需要数字为负数。

    //Get members
$select = mysql_query("SELECT * FROM members") or die(mysql_error());

//Start the loop
while($members= mysql_fetch_row($select)){

//Get limit
$limit = $members['limit'];
    $newlimit = $limit - 1;

mysql_query("UPDATE `members` SET `limit` = '".$newlim."' WHERE `email`='".$members['email']."'");
}

有什么建议吗?此代码成功运行,直到值达到0.但是我需要它来保持减法。

提前致谢! 布兰登

编辑:更新了上面的代码。有错误

2 个答案:

答案 0 :(得分:2)

我的猜测是limit列是UNSIGNED INT。无符号数可以是有符号数的两倍,但它们不能具有负值(因此无符号)。

您可以使用ALTER TABLE语句将列更改为INT,但是您需要小心,因为如果limit字段中存储的任何值大于 2147483647 (如果将其更改为已签名的INT),则不会保留这些值

答案 1 :(得分:0)

删除extra = symbol

$newlimit = $limit - 1;

并在SQL语句中将$newlim替换为$newlimit

另请注意,您可以在单个SQL语句中执行相同操作,而不涉及任何循环或PHP:

UPDATE `members` SET `limit`=`limit`-1