PHP는 초기부터 MySQL을 지원해 왔으며 두 번째 버전에는 API가 포함되었습니다. 두 가지의 조합이 매우 일반적이기 때문에 이 확장은 기본적으로 활성화됩니다. 그러나 PHP 5에서는 MySQL Improved, 줄여서 mysqli라는 새로운 MySQL 확장 기능이 출시되었습니다.
왜 새로운 확장이 있나요? 그 이유는 두 가지입니다. 첫째, MySQL은 빠르게 발전하고 있으며 이전 확장에 의존하는 사용자는 준비된 명령문, 고급 연결 옵션 및 보안 개선과 같은 새로운 기능을 활용할 수 없습니다. 둘째, 이전 확장은 확실히 사용하기 좋았지만 많은 사람들은 절차적 인터페이스가 쓸모없다고 생각했고 다른 애플리케이션과의 긴밀한 통합뿐만 아니라 필요에 따라 인터페이스를 확장할 수 있는 기능 때문에 객체 지향 인터페이스를 선호했습니다. 이러한 단점을 해결하기 위해 MySQL 개발자는 내부 동작을 수정하여 성능을 향상시킬 뿐만 아니라 최신 버전의 MySQL에서 사용할 수 있는 기능의 사용을 용이하게 하는 추가 기능을 도입하여 확장 기능을 개편해야 한다고 결정했습니다.
몇 가지 주요 개선 사항:
# 객체 지향: mysqli 확장은 일련의 클래스로 캡슐화되어 많은 사람들이 더 편리하고 더 편리하다고 생각하는 절차적 접근 방식의 사용을 장려합니다. PHP의 전통적인 절차적 접근 방식보다 편리합니다. 더 효율적인 프로그래밍 패러다임입니다. 그러나 절차적 패러다임을 선호하는 사람들은 걱정하지 않습니다. 왜냐하면 이 패러다임은 전통적인 절차적 인터페이스도 제공하기 때문입니다.
# 준비된 문: SQL 주입 공격을 방지할 수 있습니다. 반복적으로 실행되는 쿼리의 오버헤드와 불편함을 제거합니다.
# 트랜잭션 지원: PHP의 원래 MySQL 확장도 트랜잭션 기능을 지원할 수 있지만 mysqli 확장은 이러한 기능에 대한 객체 지향 인터페이스를 제공합니다.
# 향상된 디버깅 기능: mysqli 확장에는 쿼리 디버깅을 위한 다양한 방법이 있어 개발 프로세스를 더욱 효율적으로 만듭니다.
# 임베디드 서버 지원: MySQL 4.0 릴리스에는 임베디드 MySQL 서버 라이브러리가 도입되어 관심 있는 사용자가 데스크탑 애플리케이션과 같은 클라이언트 애플리케이션에서 완전한 MYSQL 서버를 실행할 수 있습니다. mysqli 확장은 이러한 내장 MySQL 서버에 연결하고 작동하는 방법을 제공합니다.
# 마스터/슬레이브 지원: MySQL 3.23.15부터 MySQL은 복제를 지원합니다. mysqli 확장을 사용하면 복제된 구성에서 쿼리가 마스터 서버로 라우팅되도록 할 수 있습니다.
원본 MySQL 확장에 익숙한 사용자는 향상된 mysqli 확장이 거의 동일한 명명 규칙을 사용하여 매우 친숙하다는 것을 알게 될 것입니다. 예를 들어, 데이터베이스 연결 함수는 mysql_connect 대신 mysqli_connect라고 합니다.
1. 설치 전제조건
PHP 5부터 MySQL 지원은 표준 PHP 배포 패키지에 포함되지 않습니다. 따라서 이 확장 기능을 활용하려면 PHP를 명시적으로 구성해야 합니다.
1.1. Linux/UNIX에서 mysqli 확장 활성화
PHP를 구성할 때 --with-mysqli 플래그를 사용하세요. 이는 MySQL 4.1 이상에서 mysql_config 프로그램의 위치를 가리켜야 합니다.
1.2. Windows에서 mysqli 확장을 활성화하려면
php.ini를 수정하고 다음 줄의 주석 처리를 제거해야 합니다: Extension=php_mysqli.dll 그렇지 않은 경우, 다음 줄을 추가하세요. 물론 확장 기능을 활성화하기 전에 PHP의 Extension_dir 지시어가 적절한 디렉터리를 가리키는지 확인하세요.
1.3. MYSQL 로컬 드라이버 사용
오랫동안 PHP에서는 MYSQL 서버의 작동 여부에 관계없이 PHP 프로그램을 실행하는 서버에 MySQL 클라이언트 라이브러리를 설치해야 했습니다. 지역 또는 다른 곳. PHP 5.3에서는 이 요구 사항을 제거하고 방금 언급한 드라이버에 비해 많은 장점이 있는 MySQL Native Driver(mysqlnd라고도 함)라는 새로운 MySQL 드라이버를 도입했습니다. 이는 새로운 API가 아니라 기존 API(mysql, mysqli, PDO_MySQL)가 MySQL 서버와 통신하는 데 활용할 수 있는 새로운 "도관"입니다. 다른 드라이버 대신 mysqlnd를 사용하는 것이 좋습니다(아주 타당한 이유가 없는 한).
확장 기능과 함께 mysqlnd를 사용하려면 PHP를 다시 컴파일해야 합니다(예: --with-mysqli=mysqlnd). %>./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
와 같이 몇 가지를 더 지정할 수도 있습니다. mysqlnd 드라이버에도 몇 가지 제한 사항이 있습니다. 현재는 압축이나 SSL 지원을 제공하지 않습니다.
1.4. 사용자 권한 관리
스크립트가 MySQL 서버에 대한 연결을 초기화하면 권한이 전달되고 확인됩니다. 권한 확인이 필요한 명령을 제출할 때도 마찬가지입니다. 그러나 연결할 때 실행 사용자만 확인하면 됩니다. 나중에 새 연결이 설정되지 않는 한 스크립트의 후속 실행은 항상 해당 사용자가 됩니다.
1.5. 샘플 데이터 활용
새로운 지식을 배울 때 몇 가지 예를 추가하는 것은 쉽습니다. 데이터베이스: 기업; 테이블: 제품
CREATE TABLE 제품(
id INT NOT NULL AUTO_INCREMENT,
sku VARCHAR(8) NOT NULL,
이름 VARCHAR(100) NOT NULL,
가격 DECIMAL(5,2) NOT NULL,
PRIMARY KEY(id)
)
=== ================================================= ====================
2. mysqli 확장 프로그램 사용
2.1.
먼저 서버에 접속한 후, 데이터베이스를 선택하고 접속을 종료하세요. 객체지향과 절차지향 모두 가능한 스타일입니다.
객체 지향 인터페이스를 사용하여 MySQL 서버와 상호 작용하려면 먼저 mysqli 클래스의 생성자를 사용하여 인스턴스화해야 합니다.
mysqli([문자열 호스트 [, 문자열 사용자 이름 [, 문자열 pswd
> mysql_connect() 함수.
$mysqli = new mysqli('localhost', 'catalog_user', 'secret', 'corporate');
어느 시점에 다른 서버로 전환하거나 다른 서버를 선택하려는 경우 데이터베이스의 경우 connect() 및 select_db() 메서드를 사용할 수 있습니다. connect() 메소드의 매개변수는 mysqli 클래스의 생성자와 동일합니다.
// mysqli 클래스 인스턴스화
$mysqli = new mysqli();
// 데이터베이스 서버에 연결하고 데이터베이스 선택
$ mysqli->connect('localhost', 'root', '', 'corporate');
---------------------- - ------------------------------------------------- - ---------
또는
// 데이터베이스 서버에 연결
$mysqli = new mysqli('localhost', 'catalog_user', ' secret');
// 데이터베이스 선택
$mysqli->select_db('corporate');
스크립트 실행이 완료되면 열려 있는 모든 데이터베이스 연결 자동으로 닫히고 리소스가 복원됩니다. 그러나 페이지가 실행 중에 여러 데이터베이스 연결을 사용해야 할 수도 있으며 이러한 연결을 올바르게 닫아야 합니다. 하나의 연결만 사용하더라도 스크립트 끝에서 연결을 닫는 것이 좋습니다. $mysqli->close().
2.2. 연결 오류 처리
연결 오류를 주의 깊게 모니터링하고 그에 따른 조치를 취해야 합니다. mysqli 확장은 오류 메시지를 포착하는 데 사용할 수 있는 몇 가지 기능을 제공합니다. 또 다른 방법은 예외를 사용하는 것입니다. 예를 들어, mysqli_connect_errno() 및 mysqli_connect_error()를 사용하여 MySQL 연결 오류 메시지를 진단하고 표시할 수 있습니다.
2.3. 오류 메시지 가져오기
2.3.1. 오류 코드 가져오기
errno() 메서드는 마지막 MySQL 함수 실행 중에 생성된 오류 코드를 반환합니다. 0은 오류가 없음을 의미합니다.
$mysqli = new mysqli('localhost', 'catalog_user', 'secret', 'corporate')
printf("Mysql 오류 생성된 번호: %d", $mysqli->errno);
?>
2.3.2. 오류 메시지 가져오기
error() 메서드는 가장 최근에 생성된 오류 메시지입니다. 오류가 없으면 빈 문자열이 반환됩니다. 메시징 언어는 Mysql 데이터베이스 서버에 의존합니다.
2.4. 연결 정보를 별도의 파일에 저장
안전한 프로그래밍 측면에서 비밀번호는 정기적으로 변경하는 것이 좋습니다. 데이터베이스에 접근해야 하는 스크립트도 많고, 일일이 수정하기에는 너무 번거롭다. 해결책은 이를 별도의 파일에 저장하고 필요한 경우 현재 파일에 포함시키는 것입니다.
예를 들어 헤더 파일(mysql.connect.php)에 mysqli 생성자를 넣을 수 있습니다.
$mysqli = new mysqli(' localhost', 'catalog_user', 'secret', 'corporate');
?>
그런 다음 다른 파일에 포함합니다:
include 'mysql.connect.php';
// 데이터베이스 선택 및 쿼리를 시작합니다.
?>
====== = =========== 아직 끝나지 않았습니다. 계속하세요
이상 내용의 측면을 포함하여 PHP와 MySQL의 사용법을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.