2012-03-18 53 views
0

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

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

我需要的是“AND Bruk =‘1’”从该查询行中删除,如果我把nobruk =没有在adressbar?这是可能的,如果是这样,如何?

+1

是可能的,你有什么尝试? – 2012-03-18 23:36:23

回答

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 ..."; 
2

一个简单的if语句:

$query1 = "SELECT * FROM `Yrker` WHERE `Kategori` = '1'"; 
    if ($_GET['nobruk']!='no') { 
    $query1.=" AND `Bruk` = '1'"; 
    } 
$query1.= " ORDER BY yearstart DESC, mndstart DESC"; 
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; 
?> 
0
$query1 = "SELECT * FROM `Yrker` WHERE `Kategori`='1' ".($_GET['nobruk'] === 'no' ? "" : "AND `Bruk`='1' ")."ORDER BY yearstart DESC, mndstart DESC"; 
+0

谢谢,我选择使用你的建议,因为它在我的opionion中创建了最漂亮的代码。 – 2012-03-19 09:13:26

+0

没问题。我个人同意尽可能使用最短的选项。 – inhan 2012-03-19 11:36:32