@vellitonrus

Почему неправильно идет запрос в mysql?

Написал простенький скрипт для апдейта определенной колонки базы на единицу меньше от того числа которое было.
<?php

$sql = mysql_query("select * from item");
      
   while($item = mysql_fetch_array($sql)){ 
	    echo $item['updays'];
		$day=$item['updays']-1;
		echo $day;
		mysql_query("UPDATE `item` SET `updays` = '".$day."' where id = '".$item['id']."'");

		
		}
?>


Но в базу, заносится число не на 1 меньше а на 2, тоесть если число $item['updays']=10, то в базу после операции удаления заносится число 8, а не 9. В чём может быть подвох?! P.S. Принт переменной $day после операции удаления показывает, что чисто стало меньше на 1, тоесть было 10 стало 9, однако в базу забивается 8. В базе 4 товара)
  • Вопрос задан
  • 2925 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
UPDATE `items` SET `updays` = `updays`-1
и всё, не надо никаких циклов
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@artishok
кратко
mysql_query("UPDATE item SET updays = updays-1 where id = '".$item['id']."'");
Ответ написан
shcherbanich
@shcherbanich
Программист
не надо в цикле писать запросы, лучше сформировать его тело, а потом 1 раз выполнить
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
Скрипт каким образом запускается?
Удостоверьтесь в том, что знаете, сколько именно раз он запускается.
Это можно сделать, например, так:
file_put_contents('dbupd.txt', date('Y-m-d H:i:s').' run'.PHP_EOL, FILE_APPEND);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы