2012-03-18 7 views
0

これはほぼ同じ情報を含む3つの異なるPHPページがあるので、これを1ページに減らすためにmysqlクエリの中にphp変数が必要です。 今日ではこのようなものです:?私はadressbarでno nobruk =置けば「AND Bruk = 『1』が」このクエリラインから削除されていることを必要とするmysqlの中の引数の場合

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

。これは可能ですか?あれば、どうですか?

+1

はい可能です、何を試しましたか? –

答えて

2

ifをクエリ内に入れたくない(できない)ことはできません。 を使用してifを使用して、条件に基づいてクエリを作成します。短いとternary operatorを伴う別の方法として、

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

そのうちの1つは、これを書くための方法はたくさん、ありますが、if文

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

単純です:

$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で最も美しいコードにしてから使用します。 –

+0

問題ありません。私は個人的に可能な最短のオプションを使用することに同意します。 – inhan

関連する問題