2016-11-22 61 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具有相同顺序和相同类型的相同键/值对。

我希望你的疑问现在被清除。 :-)

相关问题