为什么if($ row ['field'] == value)像SELECT WHERE field = value一样工作?

时间:2016-11-22 15:29:55

标签: php mysql

今天我喝醉了。我写错了这样的代码。

$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'相同。 对我来说没有意义,为什么它有效?

我认为if语句只检查一列,而不是相对于所有行列。它应该不起作用。

3 个答案:

答案 0 :(得分:3)

区别在于:

  1. if($row['status'] == 'Active') {在这里,您将数据库中的所有表记录带到您的应用程序,并在客户端进行过滤。因此,在传输所有数据时会产生性能成本。

  2. WHERE status= 'Active'执行db中的过滤器,只发送相关数据,因此效率更高。

答案 1 :(得分:2)

它们都用在php中。

== Equality $x == $y如果$ x和$ y具有相同的键/值对,则返回true

===标识$x === $y如果$ x和$ y具有相同顺序和相同类型的相同键/值对,则返回true

我希望你的怀疑现在已经清除。 : - )

答案 2 :(得分:0)

PHP中等于运算符的sintax是==(或===)

就像你的代码一样

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

mysql(或sql)中等于运算符的sintax是=

喜欢

 SELECT WHERE col1 = 'Active' .

所以结果是等价的