我正在学习如何在PHP中使用MySQL,当学习如何在数据库中调用SQL查询时,我看到过程方法包含了这个if语句:
if($result = mysqli_query($link, $query))
这句话是什么意思?我认为它是:
1.将$result
设为mysqli_query($link, $query)
2.如果$result
不为空(即mysqli_query
方法返回某些内容),则执行if块。
如果我的想法是正确的,$result
在if块之外是否可用?
答案 0 :(得分:4)
这与
相同$result = mysqli_query($link, $query);
if ($result) { // If $result is truthy
// Stuff
}
基本上意味着“如果mysqli_query
的结果是真实的,那么就做一些事情。如果失败了,就不要这样做,因为$result
将是假的。”
失败时返回
FALSE
。对于成功的SELECT
,SHOW
,DESCRIBE
或EXPLAIN
个查询mysqli_query()
将返回mysqli_result
个对象。对于其他成功的查询,mysqli_query()
将返回TRUE
。
mysqli_result
和TRUE
都是真实的,但FALSE
显然不是。if
。因此,如果查询正常,它只会进入$result
块。
是的,<?php
$object = (object)array('foo' => 'bar');
var_dump($object); // object(stdClass)#1 (1) { ["foo"] => string(3) "bar" }
var_dump((bool)$object); // bool(true)
将在if查询之外提供,就像上面的示例一样。
A live demo demonstrating an object converted to a bool (it will be TRUE
):
{{1}}
答案 1 :(得分:4)
赋值操作的结果是赋值。
这意味着:=
是运算符,赋值运算符是准确的。它的作用类似于 a = b
,其中 b
的值已分配给变量 a
。以加法运算符返回数字的相同方式,例如, 1 + 2
返回3
,赋值操作也返回一个值。它返回的值是指定的值;在上面的情况下, b
。
这就是$a = $b = $c
有效的原因。
if ($result = mysqli_query($link, $query))
这会将mysqli_query($link, $query)
的结果分配给$result
,然后测试与the standard truthiness test, i.e. == true
分配的相同值。
在
$result
块之外可以使用if
吗?
是的,PHP没有块范围,它只有功能范围。
答案 2 :(得分:1)
mysqli_query($link, $query)
失败时返回false。
所以做if($result = mysqli_query($link, $query))
您将mysqli_query
的返回值保存到$result
并检查$result
是否为false。
如果它不是假,则表示mysqli_query
未失败,您可以在$result
中访问结果。
if($result = mysqli_query($link, $query)) {
//success. YAY
}
else {
//failed.
}