2013-06-24 37 views
0

使用PHP MySQL的功能,如果我有一个查询,我知道只会从数据表中我窝返回一行的功能是这样的:是否有可能巢mysqli的命令

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

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

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

是否有可能将两行压缩为一个,因为我使用旧的mysql函数?

+0

你试过自​​己凝结它们吗? – Jimbo

+0

你只需使用'mysqli_query'等云(不是很美但是可以使用)。也许(未测试),你可以使用'$ db-> query(“...”) - > fetch_assoc();' –

+0

@Jimbo是的,我曾尝试过自己,但经过一些变化,我会问以前可能做过的人。我今天才开始研究mysqli。 – AndrewDFrazier

回答

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(); 
} 

如果你巢或链中的电话,你可能会遇到未处理的致命错误,因为query()将返回false,如果有一个MySQL错误。

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

+0

谢谢,链接是我正在寻找,也提到@Le_Morri。 正如我所说,我知道只有一条记录要退回时使用它。 – AndrewDFrazier

1

可以chain他们:

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

虽然这两个是和你的INTIAL mysql_的使用很容易出错。两者都不能很好地处理失败的查询。

+0

这是错误的方式运行查询 –

-1

事实上,不应该有浓缩两行使用旧的mysql函数,不应该用新的。

程序员需要压缩的东西,他们写函数。所以你必须。

那么,什么是必须要

$myVariable = my_function("SOME QUERY"); 

正如你所看到的,

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