PHP/MYSQL- Число операций останавливается на ноль

63
7

Я чувствую, что есть простое решение, но я не могу найти его где угодно.

У меня есть цикл while() и в начале каждого цикла, я вычитаю 1 из числа, которое я получаю из базы данных MYSQL. Но по какой-то причине он останавливается на 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. Но мне нужно, чтобы он продолжал вычитать.

Заранее спасибо! Brandon

Отредактировано: обновлен код выше. Произошла ошибка

спросил(а) 2021-01-25T18:42:09+03:00 5 месяцев назад
1
Решение
77

Я предполагаю, что столбец с limit по UNSIGNED INT - UNSIGNED INT. Беззнаковые числа могут быть в два раза больше, чем подписанные числа, но они не могут иметь отрицательное значение (следовательно, без знака).

Вы можете использовать оператор ALTER TABLE для изменения столбца в INT, но вам нужно быть осторожным, потому что, если какое-либо из значений, хранящихся в поле limit, больше, чем 2147483647 (если вы измените его на подписанный INT), эти значения не будут сохранится.

ответил(а) 2021-01-25T18:42:09+03:00 5 месяцев назад
45

удалите символ extra =

$newlimit = $limit - 1;

и замените $newlim $newlimit в вашем SQL-заявлении

также обратите внимание, что вы можете делать одно и то же в одном выражении SQL без участия цикла или php:

UPDATE 'members' SET 'limit'='limit'-1

ответил(а) 2021-01-25T18:42:09+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема