0

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

我有一个 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。但我需要它来保持减法。

提前致谢!布兰登

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

4

2 回答 2

2

我的猜测是你的limit专栏是一个UNSIGNED INT. 无符号数可以是有符号数的两倍,但它们不能有负值(因此是无符号数)。

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

于 2013-03-05T15:29:25.460 回答
0

删除多余的 = 符号

$newlimit = $limit - 1;

并在您的 SQL 语句中替换$newlim$newlimit

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

UPDATE `members` SET `limit`=`limit`-1
于 2013-03-05T15:29:19.330 回答