解释正确的mysqli对象的逻辑

Posted

技术标签:

【中文标题】解释正确的mysqli对象的逻辑【英文标题】:Explain the logic of the correct mysqli object 【发布时间】:2011-01-04 21:47:19 【问题描述】:

所以使用mysqli对象进行查询的正确格式是:

if ($result = $hookup->query($sql))

而不是:

if ($result == $hookup->query($sql))

为什么每个人都认为是这种情况?正确格式背后的逻辑是什么?

【问题讨论】:

【参考方案1】:

第一个示例(正确的示例)$hookup->query($sql) 的结果分配$result,然后在if 中评估其“真实性”。

第二个示例比较$result现有 值与$hookup->query($sql) 的结果。如果$result 还不是“真”,if 将评估为假。

【讨论】:

【参考方案2】:

只能是mysqli_resultmysqli_query返回的对象,如果失败则返回false。

if (false) ... always false
if (mysqli_result) ... always true

但是,我总是这样做以提供更大的灵活性,例如存储 $result 以供以后使用,但要确保不会出现异常

$result = $hookup->query($sql;
if ($result instanceof mysqli_result)

  /* query success, proceed with something else */ 

else

  /* query fail, execption */

【讨论】:

【参考方案3】:

这是在不同上下文中使用的两种不同的东西。

第一个例子(有一个=)意味着:

如果query() 的结果为真 - 哦,顺便说一下,将结果分配给新变量$result - 然后执行以下操作: ....

它是一步分配和检查结果的简写。在您展示的上下文中,这通常是您想要的。

第二个例子(有两个==)表示

如果$result 的值等于query() 调用的返回值,则执行以下操作:.....

【讨论】:

以上是关于解释正确的mysqli对象的逻辑的主要内容,如果未能解决你的问题,请参考以下文章

PHP mysqli_fetch_assoc 没有返回正确的值

Spring的IOC原理 通俗解释

PHP中的MySQLi扩展学习MySQLI_result对象操作

逻辑学的研究对象

PHP中的MySQLi扩展学习MySQLI_STMT对象操作

Swift Json 连接失败。 JSON对象正确吗?