2016-11-22 8 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'のように動作します。 それは私には意味がありません、なぜそれは働いていますか?

私は文がちょうど1つの列をチェックし、すべての行の列に相対的ではないと思います。それは動作しません。

+0

どうしたの? –

+0

なぜ動作するのですか? – tuchawat

+0

データベーステーブルからすべてのレコードをフェッチしています...それらのすべて... ... while whileループでは、フィールドの一部が特定の条件に一致する場合、行ごとにチェックしています。あなたは結果を出力します...しかし、私が前に言ったように、あなたはすべてのレコード(行単位で、aye aye!)をループしています。 – Hackerman

答えて

3

差がある:ここでは

  1. if($row['status'] == 'Active') {アプリにDBからのすべてのテーブルのレコードを持って、クライアント側のフィルタを行います。このため、すべてのデータを転送するにはパフォーマンスが低下します。

  2. WHERE status= 'Active'データベースでフィルタを実行し、関連するデータのみを送信するので、より効率的です。

0

PHPに等しい演算子のsintaxが==(または===)である

のMySQL(またはSQL)に等しい演算子のsintax

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

コードに似ている=

SELECT WHERE col1 = 'Active' . 

ので、結果は同等である

2

これらは両方ともphpで使用されます。

==等価$x == $y $ xと$ yが同じキーと値のペアを持つ場合、trueを返します。

===アイデンティティ$x === $y $ xと$ yが同じキーと値のペアを同じ順序で同じタイプに持つ場合は、trueを返します。

あなたの疑いが解消されましたら幸いです。 :-)

関連する問題