2017-01-02 97 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(); 
}