Условие в mysql_query #2

Сообщения
12
Реакции
1
Здравствуйте!
Продолжение темы https://dev-cs.ru/threads/4281/

Пользователь BaHeK написал был

SQL:
UPDATE users SET nums = IF(nums > 0, nums-1, 0) WHERE users=$users
Решил поменять значение другой переменной, используя подобное условие.
Проблема в том, что данные не обновляются и не пойму почему.

SQL:
mysql_query("UPDATE users SET nums = nums - 1 WHERE users=$users AND nums > 0");
mysql_query("UPDATE users SET lala = IF(nums == 0, lala = ',3,') WHERE users=$users");
Почему-то переменная lala не принимает значение ,3,

Пробовал добавить еще false значение, но также без результата: IF(nums == 0, lala = ',3,', lala = ',4,')
 
Сообщения
957
Реакции
1,184
Помог
52 раз(а)
Проследите за синтаксисом, вы пишете неверно.
Плюс откуда взялся nums если дело имеется с переменной lala?
Должно быть
lala = IF(lala == 0, 3, 4)
19 Ноя 2018
IF(тут условие, значение если условие выполнено, значение если условие не выполнено)
 
Сообщения
12
Реакции
1
Sonyx, мне нужно, если переменная nums равна 0, то переменная lala меняла свое значение.
19 Ноя 2018
Если условие не выполнено, значение же необязательно указывать? Просто менять ничего не нужно, если условие не выполнено =>

SET lala = IF(nums == 0, ',3,') только почему-то не работает.
19 Ноя 2018
mysql_query("UPDATE users SET lala = IF(nums == 0, ',3,', ',4,') WHERE users=$users");

Так тоже не работает.
 
Сообщения
957
Реакции
1,184
Помог
52 раз(а)
Если условие не выполнено, значение же необязательно указывать
нужно, иначе при невыполненном условии будет значение НИЧЕГО (NULL).
IF(nums == 0, lala = ',3,') только почему-то не работает.
вы не хотите приложить минимум усилий чтоб найти отличия в синтаксисе? Без желания опонента разобраться в вопросе я не вижу смысла подолжать.
mysql_query("UPDATE users SET lala = IF(nums == 0, ',3,', ',4,') WHERE users=$users");

Так тоже не работает.
и не будет работать, вы
1. в ИНТ вставляете строку.
2. откуда MySQL должен знать значение nums если его никто не передал?
 
Сообщения
2,713
Реакции
2,995
Помог
59 раз(а)
Возможно, в качестве замены MAX() функции примерно такое подойдёт.
SQL:
UPDATE MyTable SET field = CASE
WHEN someCalculatedValue < 0 THEN 0
ELSE someCalculatedValue - 1
END
 
Сообщения
12
Реакции
1
Sonyx, перед циклом поставил так $nums= '.$nums.'; таким образом получать?
19 Ноя 2018
Sonyx,
$lala= '0';

А это в цикле. Что опять не так-то? Устанавливаю переменной $lala значение nums.


SQL:
mysql_query("SELECT users SET $lala =nums WHERE users=$users");

mysql_query("UPDATE users SET nums = IF($lala == 0, ',3,', ',4,') WHERE users=$users");
 
Сообщения
207
Реакции
420
Помог
10 раз(а)
unnamed, Вы задаете значение переменной в PHP. MySQL ничего о переменных самого PHP не знает.
 
Сообщения
12
Реакции
1
fantom,
SQL:
<?php
$host='localhost'; // host
$database='db'; // name base
$user='db'; // name
$pswd='12345'; // parol

$dbh = mysql_connect($host, $user, $pswd) or die("error MySQL.");
mysql_select_db($database) or die("error base");
$query = "SELECT * FROM `users`";
$res = mysql_query($query);
$users='1';

while($row = mysql_fetch_array($res))
{
    $users=$users+1;
    mysql_query("UPDATE users SET nums = nums - 1 WHERE users=$users AND nums > 0");
    mysql_query("UPDATE users SET lala = IF(nums == 0, ',3,') WHERE users=$users");
}

?>
 
Сообщения
957
Реакции
1,184
Помог
52 раз(а)
unnamed, и зачем вы тогда городите этот огород? вы все равно получаете всех юзеров до этого, сделайте условие в php.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу