2016-11-22 62 views
-1

今天我醉了。我寫這樣的錯誤代碼。

$sql = "SELECT id, firstname, lastname, status FROM MyGuests"; 
$result = $conn->query($sql); 

    while($row = $result->fetch_assoc()) { 
     if($row['status'] == 'Active') { 
     echo "<br> id: ". $row["id"]. " - Name: ". $row["firstname"]. " " . $row["lastname"] . "<br>"; 
    } 
} 

它和SELECT WHERE status ='Active'一樣工作。 它對我來說沒有意義,爲什麼它工作?

我想如果語句只檢查一列,而不是相對於所有行列。它不應該工作。

+0

什麼問題? –

+0

它爲什麼工作? – tuchawat

+0

您正在從數據庫表中提取所有記錄......所有這些......然後在您的'while'循環中,如果某些字段匹配某個條件,則逐行檢查...如果是,你打印結果......但是就像我之前說過的,你在循環所有的記錄(逐行,也就是!) – Hackerman

回答

3

的區別是:

  1. if($row['status'] == 'Active') {在這裏,你把從數據庫中的所有表記錄到您的應用程序,並做客戶端的過濾器。所以這在傳輸所有數據方面具有性能成本。

  2. WHERE status= 'Active'在db中做過濾器,只發送相關數據,所以效率更高。

0

在PHP爲等於操作員的sintax被==(或===)

像在代碼

if($row['status'] == 'Active') 

在MySQL(或SQL)的sintax爲等於操作員是=

SELECT WHERE col1 = 'Active' . 

所以結果是等效

2

它們都用於php。

==平等$x == $y返回true如果$ x和$ y具有相同的鍵/值對。

===標識$x === $y返回true如果$ x和$ y具有相同順序和相同類型的相同鍵/值對。

我希望你的疑問現在被清除。 :-)

相關問題