@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'].'"');
	};
};

возможно в данном коде обойтись без цикла? сделать все с помощью запроса или нет?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
rozhnev
@rozhnev
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
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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