2017-01-02 59 views
0

每次我從數據庫中獲取一些信息時,我正在重複isset檢查或者變量是否爲真。有沒有什麼聰明的方法可以以不同的方式實現?清除方法來檢查變量isset

如果我不會這樣做,並且變量是空的,它會給我一個錯誤,所以我不能真正理解它。

我相信我正在做的事情沒有必要,它使代碼更長。

$variable = DB::select('SELECT * FROM `table_name`'); 
    $variable2 = DB::select('SELECT * FROM `table_name2`'); 

    if (isset($variable)){ 
    if ($variable == 1){ 
     doSomething(); 
    } 
    } 

    if ($variable2){ 
    if ($variable2 == 1){ 
     doSomething2(); 
    } 
} 

編輯:我剛剛意識到,如果一個空的變量並沒有給我,它會通過所有的未來功能,無需任何意義上被處理的任何錯誤,這將使它更復雜,找到地方,整個腳本錯誤。

嗯,這可能意味着我的問題實際上是一個優勢哈哈。

+0

首先要檢查:你所需要的表的所有列或很少幾個?如果你只需要幾個,只選擇你需要的。另外,如果你使用laravel,爲什麼你不使用[models and the ORM](https://laravel.com/docs/5.0/eloquent)? – KhorneHoly

+0

我通常會獲得多列,但我不確定您是否正確理解我。我的意思是,來吧我們有2017年和空變量給我們的錯誤,而不是自動讓他們NULL或什麼的。也許我只是缺少一些知識:D – divHelper11

+0

'WHERE 1 = 1''和WHERE 2 = 2''不必要'SELECT a,b,c FROM table'會做得很好,如果你想要所有的行 – RiggsFolly

回答

1

如果你做這樣的事情:

Route::get('/select', ['as' => 'debug.select', function() { 
    // select 
    $var = DB::select('select * from users where email = 1'); 

    // convert to boolean 
    dd(!!$var); 
}]); 

你會看到的結果是:

false 

雖然

Route::get('/select', ['as' => 'debug.select', function() { 
    // Select 1 user 
    $var = DB::select('select * from users limit 1'); 

    // Convert an array to boolean/empty arrays === false on PHP 
    dd(!!$var); 
}]); 

true 

話雖這麼說,使用代碼

$variable = DB::select('SELECT * FROM `table_name`'); 
$variable2 = DB::select('SELECT * FROM `table_name2`'); 

if (! $variable) { 
    doSomethingWhenNothingWasFound(); 
} 

if ($variable) { 
    doSomethingIfFound(); 
} 

if ($variable2) { 
    doSomething2(); 
}