我现在有三个不同的PHP页面,它们包含几乎相同的信息,因此能够将其减少到一个页面我需要在mysql查询中有一个php变量。 今天是这样的:
$query1 = "SELECT * FROM `Yrker` WHERE `Kategori` = '1' AND `Bruk` = '1' ORDER BY yearstart DESC, mndstart DESC";`
如果我在地址栏中输入?nobruk = no,我需要从此查询行中删除“AND Bruk
='1'”。这是可能的,如果是的话,怎么样?
答案 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;
?>