2014-09-01 60 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. 
} 
相關問題