PHP / MariaDB / 데이터베이스 값 가져와서 출력하기

이 강좌에서 사용하는 데이터베이스는 employees입니다. (employees 설치 하기)

employees 출력하기

employees 테이블에는 직원 목록이 있습니다. 그 목록을 가져와서 출력해보겠습니다.

데이터베이스 연결 정보

employees 데이터베이스에 연결하기 위한 정보를 입력합니다. localhost, username, password는 적절히 변경합니다.

$jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' );

쿼리 작성하기

쿼리를 만듭니다. 아래는 employees 테이블에서 5개의 레코드를 가져오는 쿼리입니다.

$jb_sql = "SELECT * FROM employees LIMIT 5;";

값 저장하기

쿼리 결과를 담습니다.

$jb_result = mysqli_query( $jb_conn, $jb_sql );

출력하기

필요한 필드를 출력합니다.

while( $jb_row = mysqli_fetch_array( $jb_result ) ) {
  echo
    '<p>'
    . $jb_row[ 'emp_no' ]
    . $jb_row[ 'first_name' ]
    . $jb_row[ 'last_name' ]
    . $jb_row[ 'hire_date' ]
    . '</p>'
  ;
}

전체 코드

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>Employees</title>
  </head>
  <body>
    <?php
      $jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' );
      $jb_sql = "SELECT * FROM employees LIMIT 5;";
      $jb_result = mysqli_query( $jb_conn, $jb_sql );
      while( $jb_row = mysqli_fetch_array( $jb_result ) ) {
        echo
          '<p>'
          . $jb_row[ 'emp_no' ]
          . $jb_row[ 'first_name' ]
          . $jb_row[ 'last_name' ]
          . $jb_row[ 'hire_date' ]
          . '</p>'
        ;
      }
    ?>
  </body>
</html>

표로 만들기

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

<!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>emp_no</th>
          <th>first_name</th>
          <th>last_name</th>
          <th>hire_date</th>
        </tr>
      </thead>
      <tbody>
        <?php
          $jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' );
          $jb_sql = "SELECT * FROM employees LIMIT 5;";
          $jb_result = mysqli_query( $jb_conn, $jb_sql );
          while( $jb_row = mysqli_fetch_array( $jb_result ) ) {
            echo
              '<p>'
              . $jb_row[ 'emp_no' ]
              . $jb_row[ 'first_name' ]
              . $jb_row[ 'last_name' ]
              . $jb_row[ 'hire_date' ]
              . '</p>'
            ;
          }
        ?>
      </tbody>
    </table>
  </body>
</html>

결과가 하나인 경우

다음의 쿼리는 first_name이 Georgi인 사람의 수를 구하는 것입니다. 따라서 결과가 숫자 하나로 나옵니다.

SELECT COUNT( emp_no ) AS Number
FROM employees
WHERE first_name = 'Georgi'
;

그런 경우 while 문을 사용하지 않고 바로 출력할 수 있습니다.

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>PHP</title>
    <style>
      body { 
        font-family: Consolas, monospace;
      }
    </style>
  </head>
  <body>
    <?php
      error_reporting( E_ALL ); ini_set( "display_errors", 1 );
      $db_conn = mysqli_connect( 'localhost', 'codingfactory', '1qaz2wsx!@', 'employees' );
      $sql = "
        SELECT COUNT( emp_no ) AS Number
        FROM employees
        WHERE first_name = 'Georgi'
        ;
      ;";
      $result = mysqli_query( $db_conn, $sql );
      $row = mysqli_fetch_array( $result );
      echo $row[ "Number" ];
    ?>
  </body>
</html>

연봉 출력하기 - 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>

Related Posts

PHP / MariaDB / 데이터베이스 값 가져와서 출력하기

PHP / MariaDB / 데이터베이스 값 가져와서 출력하기

이 강좌에서 사용하는 데이터베이스는 employees입니다. (employees 설치 하기) employees 출력하기 employees 테이블에는 직원 목록이 있습니다. 그 목록을 가져와서 출력해보겠습니다. 데이터베이스 연결 정보 employees 데이터베이스에 연결하기 위한 정보를 입력합니다. localhost, username, password는 적절히 변경합니다. $jb_conn = mysqli_connect( 'localhost', 'username', 'password', 'employees' ); 쿼리 작성하기 쿼리를 만듭니다. 아래는 employees 테이블에서 5개의 레코드를 가져오는 쿼리입니다. $jb_sql = "SELECT * FROM employees LIMIT ...

PHP / MariaDB / 데이터베이스에 데이터 입력하기

PHP / MariaDB / 데이터베이스에 데이터 입력하기

이 강좌에서 사용하는 데이터베이스는 employees입니다. (employees 설치 하기) 폼(Form) 만들기 - employees_add.php 데이터를 입력할 폼을 만듭니다.(number, date 타입과 required는 HTML5부터 지원합니다.) 값은 employees_insert.php로 전송됩니다. <form action="employees_insert.php" method="POST"> <p><input type="number" name="emp_no" placeholder="NO" required></p> <p><input type="date" name="birth_date" required></p> <p><input type="text" name="first_name" placeholder="First Name" required></p> <p><input type="text" name="last_name" placeholder="Last Name" required></p> <p><select name="gender" ...

PHP / 함수 / implode() / 배열을 하나의 문자열로 만드는 함수

PHP / 함수 / implode() / 배열을 하나의 문자열로 만드는 함수

개요 implode()는 배열에 속한 문자열을 하나의 문자열로 만드는 함수입니다. PHP 4 이상에서 사용할 수 있습니다. 문법 implode ( glue, pieces ) glue : 배열의 원소 사이에 들어갈 문자열입니다. pieces : 배열입니다. $jbary = array( 'one', 'two', 'three' ); $jbstr = implode( '/', $jbary ); 원소 사이에 /을 넣어 하나의 문자열로 만듭니다. 즉 $jbstr은 one/two/three입니다. 예제 <!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>PHP</title> <style> body { font-family: ...

PHP / Ubuntu / Apache / HTML 확장자에도 PHP 코드 인식되도록 설정하는 방법

PHP / Ubuntu / Apache / HTML 확장자에도 PHP 코드 인식되도록 설정하는 방법

Ubuntu에 Apache로 웹서버를 만들고 PHP를 사용할 수 있게 만든 경우, 기본적으로 확장자가 php인 경우에만 PHP 코드를 인식합니다. 만약 확장자가 html일 때로 PHP 코드가 인식되도록 하고 싶다면, Apache 설정을 바꿔줘야 합니다. /etc/apache2/mods-enabled/mime.conf 파일을 엽니다. 다음 코드를 추가합니다. AddType application/x-httpd-php .html 확장자가 htm인 경우에도 PHP를 인식하도록 하고 싶다면 다음처럼 합니다. AddType application/x-httpd-php .html .htm 웹서버를 다시 로드합니다. service apache2 ...

PHP / 반복문 / foreach

PHP / 반복문 / foreach

foreach는 배열의 각 값에 대하여 반복 작업을 합니다. 문법 foreach ( array_expression as $value ) { statement; } foreach ( array_expression as $value ) : statement; endforeach; 예제 배열 jba의 각 값을 변수 jbv에 넣습니다. 변수 jbv를 두 배하고 1을 뺀 값을 변수 jbr에 넣습니다. 변수 jbr을 출력합니다. <!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> ...

PHP / MariaDB / 데이터베이스에서 데이터 삭제하기

PHP / MariaDB / 데이터베이스에서 데이터 삭제하기

이 강좌에서 사용하는 데이터베이스는 employees입니다. (employees 설치 하기) 직원 추가 데이터베이스에 데이터 입력하기 강좌에 있는 방식으로 직원을 추가합니다. 연봉, 직책 등이 연결된 기존 직원을 삭제하면 문제가 생길 수 있으므로, 새로 직원을 추가한 후 그 직원을 삭제합니다. 직원 삭제하기 - employees.php 직원 정보를 출력하는 페이지에 직원을 삭제하는 기능을 추가해보겠습니다. Delete 버튼을 클릭하면 바로 삭제되고 페이지가 다시 ...

PHP / 연산자 / 논리 연산자

PHP / 연산자 / 논리 연산자

$a and $b $a와 $b가 모두 TRUE이면 TRUE를 반환합니다. $a or $b $a 또는 $b가 TRUE이면 TRUE를 반환합니다. 주의할 점은 둘 다 TRUE일 때도 TRUE라는 것입니다. 즉, 둘 다 FALSE일 때만 FALSE입니다. $a xor $b $a와 $b 중 하나만 TRUE일 때만 TRUE를 반환합니다. ! $a $a가 TRUE가 아니면 TRUE를 반환합니다. $a && $b $a와 $b가 모두 TRUE이면 TRUE를 반환합니다. $a ...

PHP / SQL Server / Ubuntu 18.04에서 연결하는 방법

PHP / SQL Server / Ubuntu 18.04에서 연결하는 방법

PHP에서 SQL Server에 연결하는 방법입니다. 서버 OS는 Ubuntu 18.04이고 Apache, PHP는 설치되어 있는 상태에서 시작합니다. 아래의 내용은 꼭 필요한 것만 모은 요약이며, 자세한 내용은 Microsoft 홈페이지에서 보실 수 있습니다. 소프트웨어 설치 다음의 명령을 차례대로 실행하여 필요한 소프트웨어를 설치합니다. curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list apt-get update ACCEPT_EULA=Y apt-get install msodbcsql17 apt-get install unixodbc-dev apt install ...

PHP / 함수 / md5() / 문자열에서 md5 해시값 생성하는 함수

PHP / 함수 / md5() / 문자열에서 md5 해시값 생성하는 함수

개요 md5()는 문자열에서 md5 해시값을 생성하는 함수입니다. 해시값에서 원래의 문자열을 만들지는 못합니다. 문자열이 같다면 같은 해시값을 만드므로, 비밀번호를 암호화하여 저장하는 용도로는 맞지 않습니다. It is not recommended to use this function to secure passwords, due to the fast nature of this hashing algorithm. 문법 md5( string $str ) str : ...

PHP / 변수 / 유동 변수(변수 안에 변수) 만드는 방법

PHP / 변수 / 유동 변수(변수 안에 변수) 만드는 방법

변수를 일정 규칙에 따라 자동으로 만들어야 할 때가 있다. 이런 변수를 유동 변수라고 하는 거 같은데, 공식 용어인지는 잘 모르겠다. 유동 변수를 만들려고 하면 변수 이름을 만들 때 변수를 넣어야 한다. 예를 들어 변수 이름에 $var라는 이름을 넣고 싶다면 다음과 같이 한다. ${$var} 아래는 변수 이름에 일련 번호를 붙이는 예제이다. 배열의 값을 일련 ...