여기서 시작
내 블로그, 백엔드 데이터베이스란? 맞습니다. MySQL이고, 서버측에서 사용하는 스크립트는 PHP이고, 전체 프레임워크는 WordPress를 사용합니다. PHP와 MySQL은 마치 부부처럼 항상 함께 일합니다. 이제 여기서는 PHP를 모아 MySQL 개발의 입문서라고도 할 수 있는 MySQL의 실제 활용 사례를 정리하겠습니다. PHP와 MySQL의 협력에 관해서는 다음 세 가지 방법밖에 없습니다:
1.mysql 확장자이지만 더 이상 사용하지 않는 것이 좋습니다.
2.mysqli 확장은 객체 지향 스타일과 프로세스 지향 스타일을 모두 제공합니다. MySQL 버전 4.1 이상이 필요합니다.
3. PDO 확장은 PHP가 데이터베이스에 액세스하기 위한 가볍고 일관된 인터페이스를 정의합니다. 지금은 개발에만 관심이 있습니다. mysql 확장은 더 이상 권장되지 않으므로 시대에 맞춰 요약하지 않겠으며 mysqli 및 PDO 방법이 더 자주 사용되므로 이 기사에서는 mysqli 확장을 사용하여 데이터베이스 서버에 연결하는 방법을 요약합니다. , 데이터를 쿼리하고 얻는 방법 및 기타 중요한 작업을 수행하는 방법을 설명합니다. 다음 블로그 포스팅에서는 PDO 관련 내용을 요약해보겠습니다.
mysqli 확장 프로그램 사용
먼저 다음 테스트 데이터베이스 db_test에서 테스트 데이터를 살펴보세요.
MySQL 데이터베이스와 상호작용할 때 먼저 연결을 설정하고 마지막으로 연결을 끊어야 합니다. 여기에는 서버 연결 및 데이터베이스 선택, 마지막으로 연결 종료 및 리소스 해제가 포함됩니다. MySQL 서버와 상호 작용하기 위해 객체 지향 인터페이스를 사용하도록 선택하려면 먼저 생성자를 통해 mysqli 클래스를 인스턴스화해야 합니다.
데이터베이스가 성공적으로 선택되면 이 데이터베이스에 대해 데이터베이스 쿼리를 수행할 수 있습니다. 스크립트 실행이 완료되면 열려 있는 모든 데이터베이스 연결이 자동으로 닫히고 리소스가 해제됩니다. 그러나 페이지가 실행되는 동안 여러 데이터베이스 연결이 필요할 수 있으며 각 연결은 적절하게 닫혀야 합니다. 하나의 연결만 사용하더라도 스크립트 끝에서 연결을 닫는 것이 좋습니다. 어떤 경우든 close()는 연결 종료를 담당합니다.
2. 연결 오류 처리
물론 MySQL 데이터베이스에 연결할 수 없다면 이 페이지에서 예상되는 작업을 계속해서 완료할 수 없을 것 같습니다. 따라서 반드시 연결 오류를 모니터링하고 그에 따라 대응하십시오. mysqli 확장 패키지에는 오류 메시지를 캡처하는 데 사용할 수 있는 많은 기능이 포함되어 있습니다. 또한 예외를 사용하여 이를 수행할 수도 있습니다. 예를 들어, mysqli_connect_errno() 및 mysqli_connect_error() 메서드를 사용하여 MySQL 연결 오류에 대한 정보를 진단하고 표시할 수 있습니다.
mysqli에 대한 자세한 내용은 여기에서 확인할 수 있습니다: http://php.net/manual/zh/book.mysqli.php
데이터베이스와 상호작용
대부분의 쿼리는 CRUD라고 하는 작업 생성, 가져오기, 업데이트 및 삭제와 관련되어 있습니다. 여기서는 CRUD 관련 내용을 요약하기 시작합니다.
1. 데이터베이스에 쿼리 보내기
query() 메소드는 데이터베이스에 쿼리를 보내는 역할을 합니다. 다음과 같이 정의됩니다.
선택적 매개변수인 resultmode를 사용하여 이 메서드의 동작을 수정할 수 있으며 두 가지 가능한 값을 허용합니다. 이 기사에서는 둘 사이의 차이점을 요약합니다. http://www.jb51.net/article/55792.htm 다음은 간단한 사용 예입니다.
2. 데이터 삽입, 업데이트, 삭제
삽입, 업데이트, 삭제는 실제로 선택 쿼리와 동일한 삽입, 업데이트, 삭제 쿼리를 사용하여 완료됩니다. 샘플 코드는 다음과 같습니다.
3. 쿼리 메모리 해제
때때로 매우 큰 결과 집합을 얻을 수 있으며, 처리가 완료되면 결과 집합에서 요청한 메모리를 해제해야 합니다. free() 메소드가 이 작업을 완료할 수 있습니다. 예:
4. 쿼리 결과 분석
쿼리가 실행되고 결과 세트가 준비되면 이제 결과 행을 구문 분석할 차례입니다. 여러 가지 방법을 사용하여 각 행의 필드를 가져올 수 있으며, 필드를 참조하는 방법만 다르기 때문에 선택하는 방법은 주로 개인 취향에 따라 달라집니다.
(1) 결과를 객체에 담는다
완료하려면 fetch_object() 메서드를 사용하세요. fetch_object() 메소드는 일반적으로 루프에서 호출됩니다. 각 호출은 반환된 결과 집합의 다음 행이 객체로 채워지도록 합니다. 그러면 이 객체는 PHP의 일반적인 객체 액세스 구문에 따라 액세스될 수 있습니다. 예:
(2) 인덱스 배열과 연관 배열을 사용하여 결과 얻기
mysqli 확장 패키지에서는 연관 배열과 인덱스 배열을 사용하여 각각 fetch_array() 메서드와 fetch_row() 메서드를 통해 결과 집합을 관리할 수도 있습니다. fetch_array() 메서드는 실제로 결과 집합의 각 행을 연관 배열, 숫자 인덱스 배열 또는 둘 다로 얻을 수 있습니다. fetch_row()는 fetch_array의 하위 집합이라고 할 수 있습니다. 기본적으로 fetch_array()는 연관 배열과 인덱스 배열을 모두 가져오며 이 기본 동작을 수정하려면 fetch_array에 매개변수를 전달할 수 있습니다.
MYSQLI_ASSOC는 키가 필드 이름으로 표시되고 값이 필드 내용으로 표시되는 연관 배열로 행을 반환합니다.
MYSQLI_NUM은 행을 숫자 인덱스 배열로 반환하며 해당 요소의 순서는 쿼리에 지정된 필드 이름의 순서에 따라 결정됩니다.
MYSQLI_BOTH가 기본 옵션입니다.
선택한 행과 영향을 받은 행 식별
선택 쿼리에서 반환된 행 수 또는 삽입, 업데이트 또는 삭제의 영향을 받는 행 수를 확인할 수 있는 것이 바람직한 경우가 많습니다.
(1) 반환된 행 수 확인
num_rows 속성은 select 쿼리 문이 반환한 행 수를 알고 싶은 경우에 유용합니다. 예:
num_rows는 선택 쿼리로 얻은 행 수를 결정할 때만 유용합니다. 삽입, 업데이트 또는 삭제의 영향을 받는 행 수를 얻으려면 아래에 요약된 영향을 받는_rows 속성을 사용해야 합니다.
(2) 영향을 받는 행 수 확인
impeded_rows 속성은 삽입, 업데이트 또는 삭제로 인해 영향을 받은 행 수를 가져오는 데 사용됩니다. 코드 예제는 위의 코드를 참조하세요.
데이터베이스 트랜잭션 실행
MySQL 트랜잭션을 실행하는 PHP의 기능을 향상시키는 3가지 새로운 방법이 있습니다.
1.autocommit 기능, 자동 제출 모드 활성화
autocommit() 함수는 MySQL 자동 커밋 모드의 동작을 제어합니다. 전달된 매개변수는 자동 커밋을 활성화할지 여부를 결정합니다. 자동 커밋을 활성화하려면 TRUE를 전달하고, 자동 커밋을 비활성화하려면 false를 전달합니다. . 활성화 여부에 관계없이 성공하면 TRUE가 반환되고 실패하면 FALSE가 반환됩니다.
2.commit 함수는 트랜잭션을 커밋합니다. 현재 트랜잭션을 데이터베이스에 제출하고, 성공하면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다.
3.rollback 함수는 현재 트랜잭션을 롤백하고, 성공하면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다.
트랜잭션에 관해서는 나중에 계속해서 이 세 가지 API에 대해 간략하게 요약하겠습니다.
끝나지 않아
이것은 MySQL 학습의 시작일 뿐이며 끝나지 않을 것입니다. 계속해서 좋은 일을 하세요.