Php 是否可以嵌套mysqli命令

Php 是否可以嵌套mysqli命令,php,mysqli,Php,Mysqli,使用php mysql函数,如果我知道有一个查询只返回数据表中的一行,我会嵌套如下函数: $myVariable = mysql_fetch_assoc(mysql_query("SOME QUERY")); 使用mysqli函数,我必须使用两行代码: $query = $db->query("SOME QUERY"); $myVariable = $query->fetch_assoc(); 是否可以像我使用较旧的mysql函数那样将这两行压缩为一行?您可以: $myVaria

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

$myVariable = mysql_fetch_assoc(mysql_query("SOME QUERY"));
使用mysqli函数,我必须使用两行代码:

$query = $db->query("SOME QUERY");
$myVariable = $query->fetch_assoc();
是否可以像我使用较旧的mysql函数那样将这两行压缩为一行?

您可以:

$myVariable=$db->query(“某些查询”)->fetch_assoc()


尽管这和您最初的mysql使用都容易出错。两者都不能很好地处理失败的查询。

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

$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类并添加自己的方法来获取一行。

事实上,您不应该使用旧的mysql函数将这两行压缩为一行,也不应该使用新的mysql函数

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

那么,它必须是什么

$myVariable = my_function("SOME QUERY");
如你所见

  • 它比所有这些嵌套/链接/纠缠的结构都更短,可读性更强
  • 它具有错误处理、分析日志记录等功能
  • 如果您已经在使用函数,您甚至不必重写现有代码
您自己尝试过压缩它们吗?您只需使用
mysqli\u query
等(不是很漂亮,而是wokring)。也许(未测试)您可以使用
$db->query(“…”)->fetch_assoc()@Jimbo是的,我自己也试过,但是在一些没有用的变体之后,我想我应该问问以前可能做过的人。我今天才开始研究mysqli。不知道为什么会以“不具建设性”结束。对我来说似乎是个合理的问题。投票重新开放。这是错误的查询方式谢谢,链接是我一直在寻找的,正如@Le_Morri所提到的。正如我所说,当我知道只有一条记录需要返回时,我就使用它。