2014-09-01 37 views
1

我正在学习如何在PHP中使用MySQL和学习如何我看到的程序方法包含这个if语句调用数据库中的一个SQL查询时:

if($result = mysqli_query($link, $query)) 

这是什么声明说?我想说的是:

1.设置$result等于mysqli_query($link, $query)
2.如果$result不为空(即mysqli_query方法返回了某些内容),请执行if块。

如果我在想什么是真的,$result是否可用于if块之外?

回答

4

这是一样的

$result = mysqli_query($link, $query); 

if ($result) { // If $result is truthy 
    // Stuff 
} 

,基本上意味着“如果从mysqli_query结果是truthy,然后做一些事情。如果失败了,不这样做,因为$result将falsy。” 。

按照mysqli_query documentation

返回FALSE失败。为成功SELECT,SHOW,DESCRIBEEXPLAIN查询mysqli_query()将返回一个mysqli_result对象。对于其他成功的查询mysqli_query()将返回TRUE

既是一个mysqli_resultTRUE是truthy,但是FALSE显然不是。因此,如果查询正常,它只会输入if块。

是的,$result将在if查询之外可用,就像上面的例子一样。

A live demo demonstrating an object converted to a bool (it will be TRUE)

<?php 

$object = (object)array('foo' => 'bar'); 

var_dump($object); // object(stdClass)#1 (1) { ["foo"] => string(3) "bar" } 

var_dump((bool)$object); // bool(true) 
+0

我想补充说'mysqli_query'返回一个资源(这是truthy)成功。 – 2014-09-01 17:59:48

+0

我不确定这是否回答他的问题。 OP的问题似乎更多有关'if'声明 – 2014-09-01 18:00:38

+0

@true你认为是提问者的困惑如果不是呢? – 2014-09-01 18:01:25

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没有块范围,它只有函数范围

+0

这是最有价值的答案。 – 2014-09-01 18:02:40

+0

@true取决于什么样的提问者实际上想要知道... – 2014-09-01 18:03:01

+0

@true真...;) – deceze 2014-09-01 18:04:48

1

mysqli_query($link, $query)失败时返回假。

这样做if($result = mysqli_query($link, $query)) 你的mysqli_query的返回值保存到$result和检查,如果$result是假的。 如果不是假的,这意味着mysqli_query还没有失败,你可以在$result访问结果。

if($result = mysqli_query($link, $query)) { 
    //success. YAY 
} 
else { 
    //failed. 
} 
相关问题