2012-07-19 55 views
0

是否有可能重新编写下面的代码,甚至可以用一条线(或者简单地说就是一条)来重写一条if (result > 0)声明?mySQL/PHP:SQL语句,一行中的查询和结果分配?

// a simple query that ALWAYS gets ONE table row as result 
$query = $this->db->query("SELECT id FROM mytable WHERE this = that;"); 
$result = $query->fetch_object(); 
$id  = $result->id; 

我见过真棒,极度降低结构,如三元运算(herehere - 顺便说一句看到意见的进一步减少线)将4-5线于一体,所以也许有什么东西对单个结果SQL像上面这样的查询。

+0

只能扩展数据库库来执行'fetchOne()'类型的调用。您仍然希望在那里进行适当的错误处理,因为查询可以做,并且会失败。 – 2012-07-19 15:02:35

+0

总是选择简洁明了 – blockhead 2012-07-19 15:08:39

+0

@blockhead你能否重写你的评论?这对于非英语母语的人来说是不可理解的。 Merci! – Sliq 2012-07-19 15:09:57

回答

3

你可以缩短

$query = $this->db->query("SELECT id FROM mytable WHERE this = that;"); 
$result = $query->fetch_object(); 
$id  = $result->id; 

$id = $this->db->query("SELECT id FROM mytable WHERE this = that")->fetch_object()->id; 

但是这和原来的代码会发出错误,如果任何功能返回意外的响应。更好的写法:

$query = $this->db->query("SELECT id FROM mytable WHERE this = that"); 
if (!$query) { 
    error_log('query() failed'); 
    return false; 
} 
$result = $query->fetch_object(); 
if (!$result) { 
    error_log('fetch_object() failed'); 
    return false; 
} 
$id  = $result->id; 
相关问题