2014-10-26 4 views
1

Некоторые из переменных ниже (us1 или sp1 ..) могут иметь нулевое значение (у клиента есть возможность не заполнять соответствующие текстовые поля). Как я могу синтаксис «where» с только переменными «не null»; Например, когда us1 не утративший sp1 имеет нулевое значение, «где» пункт должен быть: «где customer.username1 = 'us1» Заранее спасибогде предложение с ненулевыми переменными

$us1 = $_POST['username1']; 
$sp1 = $_POST['startPoli1']; 

SELECT `username1`,`startPoli1`, `finalPoli1`,`weight1` ,`phone1` 
FROM customer ,registration1 
where customer.startPoli1 = 'sp1' and customer.username1 = 'us1' 
+3

Используйте 'if' и динамически создавайте запрос. –

+0

Возможный дубликат [Необязательные аргументы в разделе WHERE] (http://stackoverflow.com/questions/10185638/optional-arguments-in-where-clause) – GSerg

+0

использовать nvl в вашем запросе? – SMA

ответ

1

Написать состояние следующим образом:

WHERE ('sp1' IS NULL OR customer.startPoli1 = 'sp1') 
AND ('us1' IS NULL OR customer.username1 = 'us1') 
0

Как это:

$us1 = $_POST['username1']; 
$sp1 = $_POST['startPoli1']; 

$sql = "SELECT `username1`,`startPoli1`, `finalPoli1`,`weight1` ,`phone1` 
FROM customer ,registration1 where 1=1 "; 

if($sp1 != null) 
    $sql += "and customer.startPoli1 = 'sp1'"; 
if($us1 != null) 
    $sql += "and customer.username1 = 'us1'"; 
0

Я думаю - это ошибка в вопросе. Забытые около $ sp1 и $ us1 являются переменными

$us1 = $_POST['username1']; 
$sp1 = $_POST['startPoli1']; 

$sql = "SELECT `username1`,`startPoli1`, `finalPoli1`,`weight1` ,`phone1` 
FROM customer ,registration1 where 1=1 "; 

if($sp1 != null) 
    $sql += "and customer.startPoli1 = '" + $sp1 + "'"; 
if($us1 != null) 
    $sql += "and customer.username1 = '" + $us1 + "'"; 
Смежные вопросы