PHP와 MySQL 연동하기
2022. 2. 6. 13:56ㆍPHP
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);
결과
데이터가 잘 생성되는 것을 볼 수 있습니다.