[php] PHP / MariaDB / 데이터베이스 값 가져와서 출력하기
2023.06.22 14:55
[php] PHP / MariaDB / 데이터베이스 값 가져와서 출력하기
이 강좌에서 사용하는 데이터베이스는 employees입니다. (employees 설치 하기)
목차
employees 출력하기
employees 테이블에는 직원 목록이 있습니다. 그 목록을 가져와서 출력해보겠습니다.
데이터베이스 연결 정보
employees 데이터베이스에 연결하기 위한 정보를 입력합니다. localhost, username, password는 적절히 변경합니다.
쿼리 작성하기
쿼리를 만듭니다. 아래는 employees 테이블에서 5개의 레코드를 가져오는 쿼리입니다.
값 저장하기
쿼리 결과를 담습니다.
출력하기
필요한 필드를 출력합니다.
전체 코드

표로 만들기
표로 출력하도록 변경한 코드입니다. HTML과 CSS만 바뀌었을 뿐, 데이터베이스를 불러오고 출력하는 것은 위와 같습니다.

결과가 하나인 경우
다음의 쿼리는 first_name이 Georgi인 사람의 수를 구하는 것입니다. 따라서 결과가 숫자 하나로 나옵니다.
그런 경우 while 문을 사용하지 않고 바로 출력할 수 있습니다.
연봉 출력하기 - salaries.php
salaries 테이블에는 연봉 정보가 있습니다. 직원은 emp_no로 연결되어 있습니다.
MariaDB [employees]> SELECT * FROM salaries LIMIT 5; +--------+--------+------------+------------+ | emp_no | salary | from_date | to_date | +--------+--------+------------+------------+ | 10001 | 60117 | 1986-06-26 | 1987-06-26 | | 10001 | 62102 | 1987-06-26 | 1988-06-25 | | 10001 | 66074 | 1988-06-25 | 1989-06-25 | | 10001 | 66596 | 1989-06-25 | 1990-06-25 | | 10001 | 66961 | 1990-06-25 | 1991-06-25 | +--------+--------+------------+------------+ 5 rows in set (0.00 sec)
emp_no 대신에 직원 이름을 출력하려면 JOIN을 이용합니다.
MariaDB [employees]> SELECT first_name, last_name, salary, from_date, to_date FROM salaries LEFT JOIN employees ON salaries.emp_no = employees.emp_no LIMIT 20; +------------+-----------+--------+------------+------------+ | first_name | last_name | salary | from_date | to_date | +------------+-----------+--------+------------+------------+ | Georgi | Facello | 60117 | 1986-06-26 | 1987-06-26 | | Georgi | Facello | 62102 | 1987-06-26 | 1988-06-25 | | Georgi | Facello | 66074 | 1988-06-25 | 1989-06-25 | | Georgi | Facello | 66596 | 1989-06-25 | 1990-06-25 | | Georgi | Facello | 66961 | 1990-06-25 | 1991-06-25 | | Georgi | Facello | 71046 | 1991-06-25 | 1992-06-24 | | Georgi | Facello | 74333 | 1992-06-24 | 1993-06-24 | | Georgi | Facello | 75286 | 1993-06-24 | 1994-06-24 | | Georgi | Facello | 75994 | 1994-06-24 | 1995-06-24 | | Georgi | Facello | 76884 | 1995-06-24 | 1996-06-23 | | Georgi | Facello | 80013 | 1996-06-23 | 1997-06-23 | | Georgi | Facello | 81025 | 1997-06-23 | 1998-06-23 | | Georgi | Facello | 81097 | 1998-06-23 | 1999-06-23 | | Georgi | Facello | 84917 | 1999-06-23 | 2000-06-22 | | Georgi | Facello | 85112 | 2000-06-22 | 2001-06-22 | | Georgi | Facello | 85097 | 2001-06-22 | 2002-06-22 | | Georgi | Facello | 88958 | 2002-06-22 | 9999-01-01 | | Bezalel | Simmel | 65828 | 1996-08-03 | 1997-08-03 | | Bezalel | Simmel | 65909 | 1997-08-03 | 1998-08-03 | | Bezalel | Simmel | 67534 | 1998-08-03 | 1999-08-03 | +------------+-----------+--------+------------+------------+ 20 rows in set (0.00 sec)
다음은 이름과 함께 연봉을 출력하는 예제입니다.
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<title>Employees</title>
<style>
body {
font-family: Consolas, monospace;
font-family: 12px;
}
table {
width: 100%;
}
th, td {
padding: 10px;
border-bottom: 1px solid #dadada;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>first_name</th>
<th>last_name</th>
<th>salary</th>
<th>from_date</th>
<th>to_date</th>
</tr>
</thead>
<tbody>
<?php
$jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' );
$jb_sql = "SELECT * FROM salaries LEFT JOIN employees ON salaries.emp_no = employees.emp_no LIMIT 20;";
$jb_result = mysqli_query( $jb_conn, $jb_sql );
while( $jb_row = mysqli_fetch_array( $jb_result ) ) {
echo '<tr><td>' . $jb_row[ 'first_name' ] . '</td><td>'. $jb_row[ 'last_name' ] . '</td><td>' . $jb_row[ 'salary' ] . '</td><td>' . $jb_row[ 'from_date' ] . '</td><td>' . $jb_row[ 'to_date' ] . '</td></tr>';
}
?>
</tbody>
</table>
</body>
</html>

[출처] https://www.codingfactory.net/11405
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.

