我觉得有一个简单的解决方案,但我无法在任何地方找到它。
我有一个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.但是我需要它来保持减法。
提前致谢! 布兰登
编辑:更新了上面的代码。有错误
答案 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