如果在mysql查询中有参数

时间:2012-03-18 23:33:06

标签: php mysql function variables

我现在有三个不同的PHP页面,它们包含几乎相同的信息,因此能够将其减少到一个页面我需要在mysql查询中有一个php变量。 今天是这样的:

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

如果我在地址栏中输入?nobruk = no,我需要从此查询行中删除“AND Bruk ='1'”。这是可能的,如果是的话,怎么样?

3 个答案:

答案 0 :(得分:2)

您不希望(也不能)在查询中添加if;您希望使用 if根据某些条件创建查询。有很多方法可以写这个,其中一个是

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

另一种更短且涉及ternary operator的方式是

$includeBruk = empty($_GET['nobruk']);
$query1 = "SELECT ... WHERE `Kategori` = '1' ".
          ($includeBruk ? "AND `Bruk` = '1' " : "").
          "ORDER BY ...";

答案 1 :(得分:2)

一个简单的if语句:

$query1  = "SELECT * FROM `Yrker` WHERE `Kategori` = '1'";
  if ($_GET['nobruk']!='no') {
    $query1.=" AND `Bruk` = '1'";
  }
$query1.= " ORDER BY yearstart DESC, mndstart DESC";

答案 2 :(得分:0)

像这样:

<?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;
?>