@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 есть свои инструменты для таких штук.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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