PHP 5 이상에서는 다음 방법을 사용하여 MySQL에 연결하는 것이 좋습니다.
MySQLi 확장("i"는 개선됨을 의미)
PDO(PHP Data Objects)
PHP 초기 버전에서는 MySQL 확장을 사용했습니다. 그러나 이 확장은 2012년에 더 이상 사용되지 않습니다.
MySQLi를 사용해야 할까요, 아니면 PDO를 사용해야 할까요?
짧은 답변이 필요하다면 "익숙한 것을 사용하세요" .
MySQLi와 PDO에는 각각의 장점이 있습니다.
PDO는 12개의 서로 다른 데이터베이스에서 사용되며 MySQLi는 MySQL 데이터베이스만 대상으로 합니다.
그래서 프로젝트가 여러 데이터베이스 사이를 전환해야 하는 경우 연결 문자열과 부서 쿼리문만 수정하면 되므로 PDO를 사용하는 것이 좋습니다. MySQLi를 사용하면 다른 데이터베이스를 사용하는 경우 쿼리를 포함한 모든 코드를 다시 작성해야 합니다.
둘 다 객체 지향이지만 MySQLi는 API 인터페이스도 제공합니다.
둘 다 준비된 진술을 지원합니다. 준비된 명령문은 SQL 주입을 방지할 수 있으며 웹 프로젝트 보안에 매우 중요합니다.
MySQLi 및 PDO가 MySQL 인스턴스에 연결
이 장과 다음 장에서는 다음 세 가지 방법을 사용하여 PHP 운영을 시연합니다. MySQL:
MySQLi(객체 지향)
MySQLi(프로시저 지향)
PDO
MySQLi 설치
Linux 및 Windows: 대부분의 경우 php5 mysql 패키지를 설치할 때 MySQLi 확장이 자동으로 설치됩니다.
설치 세부 사항은 http://php.net/manual/en/mysqli.installation.php를 확인하세요.
phpinfo()를 통해 설치 성공 여부를 확인할 수 있습니다.
PDO 설치
설치 세부 사항은 http://php.net/manual/en/pdo.installation.php를 참조하세요.
phpinfo()를 통해 설치 성공 여부를 확인할 수 있습니다.
MySQL에 연결
MySQL에 액세스하기 전에 데이터베이스를 사용하려면 먼저 데이터베이스 서버에 연결해야 합니다.
예제(MySQLi - 객체 지향)
<?php $servername = "localhost"; //服务器 $username = "username"; //用户名 $password = "password"; //密码 // 创建连接 $conn = new mysqli($servername, $username, $password); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } echo "连接成功"; ?>
참고위의 객체 지향 예에서는 $connect_error가 PHP 5.2.9 및 5.3.0에 추가되었습니다. 이전 버전과의 호환성이 필요한 경우 다음 코드 대체를 사용하십시오.
// 연결 감지
if (mysqli_connect_error()) {
die("Database 연결 실패: " . mysqli_connect_error());
}
인스턴스(MySQLi - 프로시저 지향)
<?php $servername = "localhost"; $username = "username"; $password = "password"; // 创建连接 $conn = mysqli_connect($servername, $username, $password); // 检测连接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "连接成功"; ?>
인스턴스(PDO)
<?php $servername = "localhost"; $username = "username"; $password = "password"; try { $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password); echo "连接成功"; } catch(PDOException $e) { echo $e->getMessage(); } ?>
위의 PDO 인스턴스에서 데이터베이스( myDB). PDO는 연결 프로세스 중에 데이터베이스 이름을 설정해야 합니다. 지정하지 않으면 예외가 발생합니다.
연결 닫기
스크립트가 실행된 후 연결이 자동으로 닫힙니다. 다음 코드를 사용하여 연결을 닫을 수도 있습니다.
인스턴스(MySQLi - 객체 지향)
$conn->close();
인스턴스(MySQLi - 프로시저 지향)
mysqli_close($conn);
인스턴스(PDO)
$conn = null;