2012-03-18 3 views
0

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

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

мне нужно, что «И Bruk =„1“» удаляется из этого запроса строки, если я поставил nobruk = нет в adressbar?. Возможно ли это, и если да, то как?

+1

да его возможно, что вы пробовали? –

ответ

2

Вы не хотите (и не можете) поставить if в свой запрос; вы хотите, чтобы использовать a 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

Простой, если заявление:

$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

Спасибо, я решил использовать ваши предложения, так как он сделал в моем оприонерии самый красивый код. –

+0

Нет проблем. Я лично согласен с использованием кратчайшего возможного варианта. – inhan

Смежные вопросы