PHP와 MySQL 연동하기

2022. 2. 6. 13:56PHP

PHP와 MySQL을 연동하기 위해서는 MySQLi 확장 API를 이용해서 데이터베이스를 연동하는 방법이 있습니다.

 

MySQLi이란 MySQL의 구조가 매우 복잡하여 버전을 업데이트 할 때마다 큰 어려움이 있었는데, 이 문제를 해결하기 위하여 PHP 5에 대응할 수 있고, MySQL 4.1을 완벽하게 지원할 수 있는 새로운 확장 API, MySQLi가 개발되었습니다.

 

특징

  • MySQLi는 MySQL 확장의 소스코드의 복잡하고 조잡했던 문제를 해결하였다.
  • MySQL 클라이언트 라이브러리와의 호환성이 높아졌다.
  • MySQL 확장과의 호환성은 완벽하지 않지만, 약간의 수정만 하면 MySQL 기반 소스코드를 MySQLi 기반 소스코드로 이식할 수 있다.
  • MySQL 확장보다 최대 40% 빠른 속도를 지원한다.
  • MySQL 확장보다 패스워드 생성 등의 보안 기능이 강화되었다.

 

사용 방법

1. 절차 지향

<?php
$mysql_host = "localhost";
$mysql_user = "root";
$mysql_password =  "1234";
$mysql_db = "mydb"; // mydb라는 데이터베이스에 접속

$conn = mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_db);

if (!$conn) {
    die("연결 실패: " . mysqli_connect_error());
}

echo "연결 성공";

2. 객체 지향

<?php
$mysql_host = "localhost";
$mysql_user = "root";
$mysql_password =  "1234";
$mysql_db = "mydb"; // mydb라는 데이터베이스에 접속

$conn = new mysqli($mysql_host, $mysql_user, $mysql_password, $mysql_db);

if ($conn->connect_error) {
    die("연결 실패: " . $conn->connect_error);
}

echo "연결 성공";

 

 

 

select 문

<?php
$mysql_host = "localhost";
$mysql_user = "root";
$mysql_password =  "1234";
$mysql_db = "mydb";

$conn = mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_db);

if (!$conn) {
    die("연결 실패: " . mysqli_connect_error());
}

$sql = "select * from example";
$res = mysqli_query($conn, $sql);

if (mysqli_num_rows($res) > 0) {
    while ($row = mysqli_fetch_array($res)) {
        echo "id: " . $row["id"] . " - name: " . $row["name"] . " - birthday: " . $row["birthday"] . "<br>";
    }
} else {
    echo "저장된 데이터가 없습니다.";
}

mysqli_close($conn);

mydb라는 데이터베이스에 있는 example 테이블에 저장된 레코드를 가져오는 코드입니다.

이의 실행 결과는 이렇게 나옵니다.

실제로 MySQL을 보면 데이터가 똑같습니다.

 

insert 문

<?php
$mysql_host = "localhost";
$mysql_user = "root";
$mysql_password =  "1234";
$mysql_db = "mydb";

$conn = mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_db);

if (!$conn) {
    die("연결 실패: " . mysqli_connect_error());
}

$sql = "insert into example (id, name, birthday) values (3, '홍길동', '2004-12-09')";

if (mysqli_query($conn, $sql)) {
    echo "새 레코드가 성공적으로 생성되었습니다.";
} else {
    echo "생성 실패: " . mysqli_error($conn);
}

mysqli_close($conn);

결과

데이터가 잘 생성되는 것을 볼 수 있습니다.