2013-04-03 14 views
0

我有一些變量,有時可能是空的,有時他們可能不是......什麼是防止這些錯誤發生的最佳方法?變量偶爾會清空如何防止未定義的變量錯誤?

Notice: Undefined variable: 

    $results = searchOrders($_GET['search'], $_GET['criteriaId'], $_GET['dateEntered'], $_GET['state']); 

任何$ _GET都可以在任何時候爲空。因此,錯誤會彈出很多

+1

檢查空()方法的話..如果是空的()做到這一點要不然這 – swapnesh

+0

看看在http:// techtalk .virendrachandak.com/php-isset-vs-empty-vs-is_null /針對與您的問題相關的不同功能 - isset(),empty(),is_null()' – Floris

回答

1

您需要先用這樣的空函數驗證它。

$search = !empty($_GET['search'])?$_GET['search']:""; 
$criteriaId = !empty($_GET['criteriaId'])?$_GET[criteriaId]:""; 
$dateEntered = !empty($_GET['dateEntered'])?$_GET['dateEntered']:""; 
$state = !empty($_GET['state'])?$_GET['state']:""; 
$results = searchOrders($search, $criteriaId, $dateEntered, $state); 
+0

這樣做,我應該實際完成它像這樣開始。謝謝。 – Butterflycode

0

檢查與if(isset($var) && !empty($var))

0

使用issetempty功能。

例如:

if (empty($var) && isset($var)) { 
    echo '$var is either 0, empty, or not set at all'; 
} 
0

不想使用isset()功能。

參考這個..

isset()

0

普遍的問題,與

if(isset($_GET['search'])) { 
    $results = searchOrders($_GET['search'], $_GET['criteriaId'], $_GET['dateEntered'],  $_GET['state']); 

}

常用解決現在只能當搜索可用時,它將會運行。

如果您想了解的isset函數這裏看看更多的信息: http://php.net/manual/en/function.isset.php

0
foreach($_GET as $key){ 
    if(isset($key)){ 
    $results = searchOrders($key); 
    } 
} 
0

searchOrders功能支持空參數?如果是這樣,你只是想擺脫警告/錯誤消息,只是把@之前

$results = @searchOrders($_GET['search'], $_GET['criteriaId'], $_GET['dateEntered'], $_GET['state']); 

如果功能不支持空的論點,他們都需要,你需要

之前進行檢查
if(isset($_GET['search']) && !empty($_GET['search']) 
    && isset($_GET['criteriaId']) && !empty($_GET['criteriaId']) 
    && isset($_GET['dateEntered']) && !empty($_GET['dateEntered']) 
    && isset($_GET['state']) && !empty($_GET['state'])) 
    $results = searchOrders($_GET['search'], $_GET['criteriaId'], $_GET['dateEntered'], $_GET['state']); 

如果您使用的這些變量多次,並且不希望使用if@每次,您可以某處簽到他們對劇本的開頭:

$_GET['criteriaId'] = (isset($_GET['criteriaId']) & !empty($_GET['criteriaId'])) ? $_GET['criteriaId'] : null; 

您可以將其用於所有變量,並將null替換爲應分配給變量的默認值。

1

快速和骯髒的方法是使用@操作:

$results = searchOrders(@$_GET['search'], @$_GET['criteriaId'], @$_GET['dateEntered'], @$_GET['state']); 

不過,我會建議不要使用這個,因爲它會導致不好的,草率的代碼。您可以使用isset變量或數組的情況下使用構造是這樣的:!

$vars = $_GET + array(
    'search' => '', 
    'criteriaId' => '', 
    'dateEntered' => '', 
    'state' => '', 
); 
// Alternatively, use $_GET += array(...) 
$results = searchOrders($vars['search'], $vars['criteriaId'], $vars['dateEntered'], $vars['state']);