@emerysh

Как сделать что бы переменные формирировали запрос?

Как сделать что бы:

переменные которые == true
формирировали запрос mysql

к примеры

$one = true;
$two =false;
$three= true;

SELECT * FROM table JOIN $one, $three..
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
neuotq
@neuotq
Прокрастинация
Зависит от логики, в самом простом случае собирают строку через цикл foreach или другой удобный в данной ситуации,или через несколько if , там с любыми проверками условий. А затем готовую строку отправляют в prepare.
Ну те грубо говоря:
/*Допустим мы уже инициализировали и настроили соединение к БД pdo*/
/*Начальная строка для запроса*/
$sql = 'SELECT one, two, three
    FROM table';
/*Дополнительная строка для запроса*/
$sql_add = '';

/*Массив для данных*/
$data  = array();
if($one) {
   //если уже не первый раз делаем, то нужно добавить AND
    if(strlen($sql_add)){
        $sql_add = $sql_add.' AND ';
    }
    //Добавляем новое условие
    $sql_add = $sql_add . ' WHERE one = :one ';
    //Добавляем новые данные в массив
    array_push($data,[':one'=>$one]);
}

...
//Собираем все вместе
$sql = $sql.$sql_add;

//Подготовляем строку
$sth = $db->prepare($sql);
//Передаем значения и выполняем
$sth->execute($data);

$result = $sth->fetchAll();

Это простой грубый пример, во многих ORM есть свои инструменты для таких штук.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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