okovalev
@okovalev

Как соединить много условий через OR?

Задача сформирвать MySQL запрос.
Сделал следующий код:
$users = [
	'u101',
	'u402',
	'u503',
	'u703',
	'u114',
	'u148',
	'u152',
	'u173',
	'u134'
];

$sql = "SELECT * FROM `tel` WHERE `datetime` BETWEEN '$begin_date' AND '$end_date' AND (";
foreach ($users AS $user) {
	$sql .= "`akk` = '$user' OR";
}
$sql .= ") ORDER BY `tel`.`datetime` DESC";
echo $sql . "<br>";


Но он выдает ошибку т.к. `akk` заканчиваеться на OR
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
@bkosun
Используйте функцию implode, чтобы разбить массив на строку используя указанный разделитель:

$users = [
  'u101',
  'u402',
  'u503',
  'u703',
  'u114',
  'u148',
  'u152',
  'u173',
  'u134'
];

$string = implode(" OR ", $users); // u101 OR u402 OR u503 OR u703 OR u114 OR u148 OR u152 OR u173 OR u134;

php.net/manual/ru/function.implode.php

Так же можно использовать оператор IN:

"... WHERE `akk` IN (" . implode(",", $users) . ");";
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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