解释正确的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_result
从mysqli_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 没有返回正确的值
PHP中的MySQLi扩展学习MySQLI_result对象操作