2012-11-27 136 views
0

我有php腳本接收來自JavaScript搜索窗體的許多變量。事情是這些變量中的一些可能是空的,所以我必須在查詢之前檢查每一個變量。例如:用戶可以輸入學生的姓名和身份,並將性別字段留空,那麼我應該如何編寫查詢?我讀過,我可能需要使用附加,但我不知道如何做到這一點。任何其他更好的主意?PHP查詢腳本 - 檢查之前檢查空變量

一段腳本:

$name = ($_GET['name']); 
$id = ($_GET['id']); 
$gender = ($_GET['gender']); 

(!$con) { 
    throw new Exception("Error in connection to DB"); 
    } 

    $query ="SELECT grade FROM students WHERE name ILIKE '%$name%' "; 
    $result = pg_query($query); 

EDIT如果

好吧,我用空isset功能,然後我要檢查每一個變量並編寫新的查詢?如何在檢查後更新原始查詢?

+0

查看空白和isset函數 – artragis

回答

2

使用PHP,您可以使用emptyisset這樣:

if (!isset($_GET['name']) || empty($_GET['name'])) { 
    // Error detection, this field isn't available 
} 

請注意,isset在這個例子實際上是多餘的,因爲如果沒有設置empty將返回false。

文檔可以發現herehere

0

你可以只檢查變量的內容是這樣的:

if (!empty($_GET['name'])) { 
    // make your query 
} 
0

條條框框。

<?php 
$first = TRUE; 
$var_names = array('name', 'age', 'gender'); 

$query = "SELECT * FROM table WHERE" 

foreach($_GET as $key => $value) { 
    if(in_array($key, $var_names) && !empty($_GET[$key])) { 
     if($first) { 
      $query .= sprintf(" %s = '%s'", $key, $value); 
      $first = FALSE; 
     } else { 
      $query .= sprintf(" AND %s = '%s'", $key, $value); 
     } 
    } 
} 
if($first) { die('no parameters given, query will error out.'); } 
echo $query; 

這也是SQL注入非常不安全的,但我不打算在這裏實現參數化查詢。