English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP 기본 튜토리얼

PHP 고급 튜토리얼

PHP & MySQL

PHP 참조 설명서

PHP MySQL WHERE

이 튜토리얼에서는 PHP를 사용하여 특정 조건에 따라 MySQL 데이터베이스 테이블에서 기록을 읽는 방법을 배웁니다.

기록 필터링

WHERE이 절은 특정 조건을 만족하는 기록만 추출하는 데 사용됩니다。

WHERE 절의 기본 문법은 다음과 같이 제공할 수 있습니다:

SELECT column_name(s) FROM table_name WHERE column_name operator value

SELECT 문의 WHERE 절을 사용하여 SQL 쿼리를 수행하고, 그 결과를 PHP mysqli_query() 함수에 전달하여 필터된 데이터를 얻습니다.
추정된 demo 데이터베이스의 persons 테이블에 다음과 같은 기록이 있습니다:

+----+------------+-----------+----------------------+
| id | first_name | last_name | email                |
+----+------------+-----------+----------------------+
|  1 | Peter      | Parker    | [email protected] |
|  2 | John | Rambo | [email protected] |
|  3 | Clark | Kent | [email protected] |
|  4 | John | Carter | [email protected] |
|  5 | Harry | Potter | [email protected] |
+----+------------+-----------+----------------------+

아래 PHP 코드는persons테이블에서 first_name = 'john'인 모든 행을 읽습니다:

예제: 절차 지향 방식

<?php
/* MySQL 서버 연결을 시도합니다. MySQL을 실행 중인 것으로 가정합니다.
기본 설정된 서버(암호가 없는 사용자 "root") */
$link = mysqli_connect("localhost", "root", "", "demo");
 
//연결 확인
if($link === false){
    die("에러: 연결할 수 없습니다. " . mysqli_connect_error());
}
 
//查询执行尝试
$sql = "SELECT * FROM persons WHERE first_name='john'";
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = mysqli_fetch_array($result)){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        // 결과 집합을 닫습니다.
        mysqli_free_result($result);
    } else{
        echo "找不到与您的查询匹配的记录。";
    }
} else{
    echo "에러: 실행할 수 없습니다. $sql" . mysqli_error($link);
}
 
//连接关闭
mysqli_close($link);
?>

예제: 객체 지향 방식

<?php
/* MySQL 서버 연결을 시도합니다. MySQL을 실행 중인 것으로 가정합니다.
기본 설정된 서버(암호가 없는 사용자 "root") */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//연결 확인
if($mysqli === false){
    die("에러: 연결할 수 없습니다. " . $mysqli->connect_error);
}
 
//查询执行尝试
$sql = "SELECT * FROM persons WHERE first_name='john'";
if($result = $mysqli->query($sql){{
    if($result->num_rows > 0){{
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch_array(){{
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //结果集释放
        $result->free();
    } else{
        echo "找不到与您的查询匹配的记录。";
    }
} else{
    echo "에러: 실행할 수 없습니다. $sql" . $mysqli->error;
}
 
//连接关闭
$mysqli->close();
?>

예제: PDO 방식

<?php
/* MySQL 서버 연결을 시도합니다. MySQL을 실행 중인 것으로 가정합니다.
기본 설정된 서버(암호가 없는 사용자 "root") */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", \
    //PDO 오류 모드를 예외로 설정
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("오류: 연결 불가능. "
      . $e->getMessage());
}
 
//查询执行尝试
try{
    $sql = "SELECT * FROM persons WHERE first_name='john'";  
    $result = $pdo->query($sql);
    if($result->rowCount() > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch());
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //结果集释放
        unset($result);
    } else{
        echo "找不到与您的查询匹配的记录。";
    }
} catch(PDOException $e){
    die("오류: $sql 실행 불가능. "
      . $e->getMessage());
}
 
//连接关闭
unset($pdo);
?>

过滤后,结果集将如下所示:

+----+------------+-----------+---------------------+
| id | first_name | last_name | email               |
+----+------------+-----------+---------------------+
|  2 | John       | Rambo     | [email protected]  |
|  4 | John       | Carter    | [email protected] |
+----+------------+-----------+---------------------+