@top13

Как осуществить правильный поиск в mysql базе с недвижимостью?

Есть следующее

WHERE `po_internet` = ? and `po_wifi` = ? and `po_avtp` = ? and `po_etag` = ? and `po_lift` = ? and `po_bolkon` = ? and `po_kurit` = ? and `po_deti` = ? and `po_merop` = ? and `po_dog` = ? and `po_kond` = ? and `po_mashin` = ?

Вместо вопросов подставляются переменные (пока из $_GET), как составить запрос так, что бы если мы передаем не все переменные, а только 1 и запрос будет выглядеть WHERE `po_internet` = ? иди по только по двум WHERE `po_internet` = ? and `po_wifi` = ?
  • Вопрос задан
  • 2757 просмотров
Решения вопроса 1
@top13 Автор вопроса
Глянул на вас и написал свое в проекте использую dbsimple.

if(!isset($_GET['internet'])){
	$_GET['internet'] = 0;
}

...

(? = 0 OR `po_internet` = ?) ... $_GET['internet'],$_GET['internet']
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
$rgWhere = array();
if (isset($_GET['foo'])) $rgWhere[] = 'foo=?';
/*  */
$sSQLQuery = "select /**/ where ".join(' and ', $rgWhere);
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Можно так:
$byFoo = 0; $foo = '';
$byBar = 0; $bar = '';
if (isset($_GET['foo']) {
    $foo = $_GET['foo'];
    $byFoo = 1;
}
if (isset($_GET['bar']) {
    $bar = $_GET['bar'];
    $byBar = 1;
}
$query = "SELECT * FROM `baz` WHERE (? = 0 OR `foo` = ?) AND (? = 0 OR `bar` = ?)";
$mysqli->bind_param('isis', $byFoo, $foo, $byBar, $bar);
Ответ написан
Ваш ответ на вопрос

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

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