xDMITRIYx
@xDMITRIYx

Запрос mysqli_affected_rows при DELETE возвращает 0?

Есть запрос:
DELETE FROM images WHERE id_news='$id_news' AND im_path='$image'

проверка mysqli_affected_rows возвращает 0, но фактически записи из БД удаляются как положено. Почему так?

Привожу поный кусок кода:
public function delete($query){	
  $result = mysqli_query($this->link, $query);
            
  if (!$result){
    $array_answer[0] = false;
    $array_answer[1] = mysqli_error($this->link);
  } else if(!mysqli_affected_rows($this->link)){
    $array_answer[0] = false;
    $array_answer[1] = "Не удалено ни одной записи!";
    $array_answer[2] = mysqli_affected_rows($this->link);
  } else{
    $array_answer[0] = true;
  }

  return $array_answer;	
}

$query = "DELETE FROM images WHERE id_news='$id_news' AND im_path='$image'";
$result = $this->msql->delete($query);


Нашел проблемный кусок кода:
foreach ($remove_imgs as $image) {
			$query = "DELETE FROM images WHERE id_news='$id_news' AND im_path='$image'";
			$result = $this->msql->delete($query);
			if(!$result[0]){
				//$answer = "Часть изображений не удалена, обновите страницу|";
				$answer = $result;
			}
		 }

записи удаляются, но возврат результатов не верный. Если убрать цикл тогда начинает работать правильно. Почему?
  • Вопрос задан
  • 370 просмотров
Решения вопроса 1
xDMITRIYx
@xDMITRIYx Автор вопроса
Вышел из положения перестроив запрос с помощью оператора IN

for($i = 0, $l = count($remove_imgs); $i < $l; $i++){
			$remove_imgs[$i] = '\'' . $remove_imgs[$i] . '\'';
		}
		$string_remove_imgs = implode(',', $remove_imgs);
	
		$query = "DELETE FROM images WHERE id_news='$id_news' AND im_path IN ($string_remove_imgs)";

так работает хорошо. Но все-таки, подскажите, пожалуйста - почему в цикле этот запрос не работал?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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