PHP 는 MySQL에 연결
PHP 5 이상은 다음을 사용하여 MySQL 데이터베이스에서 작동할 수 있습니다.
- MySQLi 확장 ("i"는 개선됨을 나타냄)
- PDO(PHP 데이터 개체)
이전 버전의 PHP는 MySQL 확장을 사용했습니다. 그러나 이 확장은 2012년에 더 이상 사용되지 않습니다.
MySQLi 또는 PDO를 사용해야 합니까?
짧은 대답이 필요하면 "당신이 좋아하는 것"이 될 것입니다.
MySQLi와 PDO는 모두 다음과 같은 장점이 있습니다.
PDO는 12개의 다른 데이터베이스 시스템에서 작동하지만 MySQLi는 MySQL 데이터베이스에서만 작동합니다.
따라서 다른 데이터베이스를 사용하기 위해 프로젝트를 전환해야 하는 경우 PDO를 사용하면 프로세스가 쉬워집니다. 연결 문자열과 몇 가지 쿼리만 변경하면 됩니다. MySQLi를 사용하면 쿼리가 포함된 전체 코드를 다시 작성해야 합니다.
둘 다 객체 지향이지만 MySQLi는 절차적 API도 제공합니다.
둘 다 준비된 진술을 지원합니다. Prepared Statements는 SQL 주입으로부터 보호하며 웹 애플리케이션 보안에 매우 중요합니다.
MySQLi 및 PDO 구문 모두의 MySQL 예제
이 장과 다음 장에서 PHP와 MySQL을 사용하는 세 가지 방법을 보여줍니다.
- MySQLi(객체 지향)
- MySQLi(절차적)
- PDO
MySQLi 설치
Linux 및 Windows의 경우: 대부분의 경우 php5 mysql 패키지가 설치되면 MySQLi 확장이 자동으로 설치됩니다.
자세한 설치 정보는 http://php.net/manual/en/mysqli.installation.php 로 이동하십시오.
PDO 설치
자세한 설치 정보는 http://php.net/manual/en/pdo.installation.php 로 이동하십시오.
MySQL에 대한 연결 열기
MySQL 데이터베이스의 데이터에 액세스하려면 먼저 서버에 연결할 수 있어야 합니다.
예(MySQLi 객체 지향)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
위의 객체 지향 예제를 참고하세요.
$connect_error는 PHP 5.2.9 및 5.3.0까지 깨졌습니다. PHP 5.2.9 및 5.3.0 이전 버전과의 호환성을 보장해야 하는 경우 다음 코드를 대신 사용하십시오.
// 연결 확인
if (mysqli_connect_error()) {
die("데이터베이스 연결 실패: " . mysqli_connect_error());
}
예(MySQLi 절차)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
예(PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
참고: 위의 PDO 예제에서는 데이터베이스(myDB)도 지정했습니다 . PDO를 연결하려면 유효한 데이터베이스가 필요합니다. 데이터베이스를 지정하지 않으면 예외가 발생합니다.
팁: PDO의 큰 이점은 데이터베이스 쿼리에서 발생할 수 있는 모든 문제를 처리할 수 있는 예외 클래스가 있다는 것입니다. try{ } 블록 내에서 예외가 발생하면 스크립트는 실행을 중지하고 첫 번째 catch(){ } 블록으로 직접 흐릅니다.
연결 닫기
스크립트가 종료되면 연결이 자동으로 닫힙니다. 전에 연결을 닫으려면 다음을 사용하십시오.
MySQLi 객체 지향:
$conn->close();
MySQLi 절차:
mysqli_close($conn);
PDO:
$conn = null;