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

PHP 기본 튜토리얼

PHP 고급 튜토리얼

PHP & MySQL

PHP 참조 매뉴얼

PHP MySQL 데이터 읽기

이 튜토리얼에서는 PHP를 사용하여 MySQL 테이블에서 기록을 읽는 방법을 배울 것입니다.

데이터베이스 테이블에서 데이터를 읽기

현재까지 데이터베이스와 테이블을 생성하고 데이터를 삽입하는 방법을 배웠습니다. 이제 이전 강의에서 삽입한 데이터를 검색하는 시간입니다. SQL SELECT데이터베이스 테이블에서 기록을 읽는 데 사용되는 문장입니다. 기본 문법은 다음과 같습니다:

SELECT  column1_name, column2_name, columnN_name  FROM  table_name ;

SELECT 문을 사용하여 SQL 쿼리를 수행하면, 이후에 PHP mysqli_query() 함수를 통해 테이블 데이터를 검색하기 위해 이를 전달하여 이 SQL 쿼리를 실행할 수 있습니다.

우리의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 테이블에 저장된 모든 데이터를 선택합니다(스타일 캐릭터(*) 사용).*)로 테이블의 모든 데이터를 선택합니다).

예제: 절차 지향 방식

<?php
/*MySQL 서버 연결을 시도합니다. MySQL을 실행 중인 것을 가정합니다.
기본 설정된 서버(암호가 없는 사용자 "root") */
$link = mysqli_connect("localhost", "root", "", "demo");
 
//연결 확인
if($link === false){{
    die("에러: 연결할 수 없습니다. " . mysqli_connect_error());
}
 
//n개의 선택 쿼리 실행을 시도합니다
$sql = "SELECT * FROM persons"
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);
    }
        echo "귀하의 쿼리와 일치하는 기록을 찾을 수 없습니다.";
    }
}
    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"
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();
    }
        echo "귀하의 쿼리와 일치하는 기록을 찾을 수 없습니다.";
    }
}
    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"   
    $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);
    }
        echo "귀하의 쿼리와 일치하는 기록을 찾을 수 없습니다.";
    }
}); catch(PDOException $e){
    die("에러: 실행할 수 없습니다. $sql. ". ". $e->getMessage());
}
 
//연결을 종료합니다
unset($pdo);
?>

코드의 사용법(프로그램 스타일)

위의 예제에서 mysqli_query() 함수가 반환하는 데이터는 $result 변수에 저장됩니다. mysqli_fetch_array() 함수를 호출할 때마다, 결과 집합의 다음 행이 배열로 반환됩니다。while 루프을 사용하여 모든 행을 검색 결과 집합에서 반복적으로 검색합니다. 마지막으로, 필드 인덱스 또는 필드 이름을 $row 변수에 전달하여 (예: $row['id'] 또는 $row[0], $row['first_name'] 또는 $row [1], $row['last_name'] 또는 $row[2], $row['email'] 또는 $row[3])에서 각 필드 값에 접근할 수 있습니다。

사용하려면for 루프이变量를 mysqli_num_rows() 함수에 전달하여 반복 계산자 값이나 쿼리가 반환하는 행 수를 얻을 수 있습니다. 이 반복 계산자 값은 반복이 얼마나 많이 실행되어야 하는지 결정합니다。