是否可以嵌套mysqli命令

时间:2013-06-24 10:54:01

标签: php mysqli

使用php mysql函数,如果我有一个我知道的查询只会从数据表中返回一行,我会嵌套这样的函数:

$myVariable = mysql_fetch_assoc(mysql_query("SOME QUERY"));

使用mysqli函数我必须使用两行代码:

$query = $db->query("SOME QUERY");
$myVariable = $query->fetch_assoc();

是否可以将两行压缩为一行,就像使用较旧的mysql函数一样?

3 个答案:

答案 0 :(得分:1)

你可以chain他们:

$myVariable = $db->query("SOME QUERY")->fetch_assoc();

尽管这些和您的初始mysql_使用都容易出错。也不会特别好地处理失败的查询。

答案 1 :(得分:1)

是的,你可以这样做,但我不推荐它:

$myVariable = $db->query("SOME QUERY")->fetch_assoc();

这是一个坏主意,因为您没有机会进行任何错误处理。例如:

$myVariable = array();

$result = $db->query("SOME QUERY");
if($result && $result->num_rows == 1)
{
    $myVariable = $result->fetch_assoc();
}

如果嵌套或​​链接调用,则可能会遇到未处理的致命错误,因为如果出现MySQL错误,query()将返回false。

如果您希望整理代码或减少代码,可以扩展MySQLi类并添加自己的方法来获取单行。

答案 2 :(得分:-1)

事实上,不应该使用较旧的mysql函数将两行压缩为一行,而不应该使用新的函数。

程序员需要压缩某些内容时,他们会编写一个函数。所以你必须这样做。

那么,它必须是什么

$myVariable = my_function("SOME QUERY");

如您所见,

  • 它比所有这些嵌套/链接/纠缠结构更短,更易读。
  • 它有错误处理,分析日志记录等等
  • 如果您已经使用了某个功能,您甚至不必重写现有代码。