Если аргумент внутри запроса MySQL - PullRequest
0 голосов
/ 19 марта 2012

Теперь у меня есть три разные страницы PHP, которые содержат почти одну и ту же информацию, поэтому, чтобы можно было сократить ее до одной страницы, мне нужно иметь переменную php внутри запроса mysql. Сегодня это так:

$query1  = "SELECT * FROM `Yrker` WHERE `Kategori` = '1' AND `Bruk` = '1' ORDER BY yearstart DESC, mndstart DESC";`

Мне нужно, чтобы "И Bruk = '1'" было удалено из этой строки запроса, если я добавлю? Nobruk = no в адресную строку. Возможно ли это, и если да, то как?

Ответы [ 4 ]

2 голосов
/ 19 марта 2012

Простое утверждение if:

$query1  = "SELECT * FROM `Yrker` WHERE `Kategori` = '1'";
  if ($_GET['nobruk']!='no') {
    $query1.=" AND `Bruk` = '1'";
  }
$query1.= " ORDER BY yearstart DESC, mndstart DESC";
2 голосов
/ 19 марта 2012

Вы не хотите (и не можете) вставить if в свой запрос;Вы хотите использовать и if, чтобы создать запрос на основе некоторого условия.Есть много способов написать это, один из которых

if (!empty($_GET['nobruk'])) {
    $query1 = "SELECT ... WHERE `Kategori` = '1' ORDER BY ...";
}
else {
    $query1 = "SELECT ... WHERE `Kategori` = '1' AND `Bruk` = '1' ORDER BY ...";
}

Другой способ, который короче и включает в себя троичный оператор , это

$includeBruk = empty($_GET['nobruk']);
$query1 = "SELECT ... WHERE `Kategori` = '1' ".
          ($includeBruk ? "AND `Bruk` = '1' " : "").
          "ORDER BY ...";
0 голосов
/ 19 марта 2012
$query1 = "SELECT * FROM `Yrker` WHERE `Kategori`='1' ".($_GET['nobruk'] === 'no' ? "" : "AND `Bruk`='1' ")."ORDER BY yearstart DESC, mndstart DESC";
0 голосов
/ 19 марта 2012

Как это:

<?php

$query = ($_REQUEST['nobruk'] == "no") ? "SELECT * FROM `Yrker` WHERE `Kategori` = '1' ORDER BY yearstart DESC, mndstart DESC": "SELECT * FROM `Yrker` WHERE `Kategori` = '1' AND `Bruk` = '1' ORDER BY yearstart DESC, mndstart DESC";
echo $query;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...