English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 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(); ?>
<?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() 함수에 전달하여 반복 계산자 값이나 쿼리가 반환하는 행 수를 얻을 수 있습니다. 이 반복 계산자 값은 반복이 얼마나 많이 실행되어야 하는지 결정합니다。