Задать вопрос
@PEREGINEC

Как обойтись без цикла for при работе с базой?

$q = mysqli_query($link, 'SELECT `name`, `many` FROM `bes` WHERE `activation`=1');
for ($c=1; $c<=mysqli_num_rows($q); $c++)
{
	$row = mysqli_fetch_assoc($q);
	$cena = 3;
	$many = $row['many'];
	settype ($many, 'integer');
	if($many >= $cena)
	{
		$new_many = $many - $cena;
		mysqli_query($link, 'UPDATE `bes` SET `many`="'.$new_many.'", `activation`="1" WHERE `name`="'.$row['name'].'"') or die (mysqli_error($link));
	}
	else
	{
		mysqli_query($link, 'UPDATE `bes` SET `activation`="0" WHERE `name`="'.$row['name'].'"');
	};
};

возможно в данном коде обойтись без цикла? сделать все с помощью запроса или нет?
  • Вопрос задан
  • 104 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Решение одним запросом:
<?php

$update = 'UPDATE `bes` 
			SET 
				`many` = IF (`many` >= :cena, `many` - :cena, `many`),
				`activation` =  IF (`many` >= :cena, 1, 0)
			WHERE `activation` = 1';

$stmt = $pdo->prepare($update);
$stmt->execute([':cena'=>3]);


share PHP code
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы