2012-11-14 44 views
0

我正在爲高級搜索編寫PHP腳本,但發生錯誤。請幫助
代碼:PHP script error注意:未定義變量

$key = $_GET['key']; 
$auth = $_GET['auth']; 
$lang = $_GET['lang']; 
$pub = $_GET['pub']; 

if(isset($key) OR isset($auth) OR isset($lang) OR isset($pub)) 
{ 
    if ($key != NULL){$keyword = "AND (native_name LIKE '%".$key."%' OR unique_name LIKE '%".$key."%')";} 
    if ($auth != 0) {$auther = "AND auth_id=".$auth."";} 
    if ($lang != 0) {$language = "AND lang_id=".$lang."";} 
    if ($pub != 0) {$publisher = "AND pub_id=".$pub."";} 

    $search_query = "SELECT native_name from books WHERE status=1 ".$keyword." ".$auther." ".$language." ".$publisher.""; 
    print $search_query; 
} 

錯誤:

注意:未定義的變量:關鍵字FILE_PATH在線90
注意:未定義的變量:auther在FILE_PATH在線90
注意:未定義變量:第90行FILE_PATH中的語言
注意:未定義變量:發佈者在FILE_PATH上,第90行

+1

以及您的變量只是有時如果issets $ _GET瓦爾定義,如果條件滿足 – Ibu

+0

1日檢查 – vlcekmi3

回答

1

如果您是通過if語句創建變量,那麼可能不會創建這些變量。

你的情況有幾種不同的選擇。

1,使用三元語法

$keyword = $key != NULL ? "AND (native_name LIKE '%".$key."%' OR unique_name LIKE '%".$key."%')" : ""; 
$author = $auth !=0 ? "AND auth_id=".$auth : ""; 
$language = $lang !=0 ? "AND lang_id=".$lang : ""; 
$publisher = $pub !=0 ? "AND pub_id=".$pub : ""; 

2,要預定義變量

$keyword = ""; 
$author = ""; 
$language = ""; 
$publisher = ""; 

if ($key != NULL){$keyword = "AND (native_name LIKE '%".$key."%' OR unique_name LIKE '%".$key."%')";} 
if ($auth != 0) {$auther = "AND auth_id=".$auth."";} 
if ($lang != 0) {$language = "AND lang_id=".$lang."";} 
if ($pub != 0) {$publisher = "AND pub_id=".$pub."";} 
0

$ keyword/$ auther/etc ..只有在_POST中的相應值被設置時纔會被賦值。如果沒有數據傳入,$ key/$ auth/etc ...將爲空字符串或null,它將等於0/null。嘗試:

if ($key != null) { 
    $keyword = ...; 
} else { 
    $keyword = some default value; 
} 

和類似的其他人。

+0

或者'$ keyword =($ key)? '...':'一些默認值';'作爲速記。 – wassup