우리가 앞으로 도약하기 전에, 우리의 궁극적 인 목표를 명확하게 그림으로 물러서는 것이 좋습니다. PHP 스크립팅 언어와 MySQL 데이터베이스 엔진의 두 가지 강력한 도구가 있습니다. 이것들이 어떻게 어울리는 지 이해하는 것이 중요합니다.
방문자의 웹 브라우저는 웹 서버에서 웹 페이지를 요청합니다.
MySQL 데이터베이스는 요청 된 콘텐츠를 PHP 스크립트로 전송하여 응답합니다.
CREATE USER 'ijdbuser'@'%' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON `ijdb`.* TO 'ijdbuser'@'%';
클라이언트
에 대한 표준화 된 방법을 제공했습니다. MariaDB는 해당 표준을 복사하고 PHP의 모든 명령은 이름 mysql
MySQL 라이브러리Mysqli 라이브러리PDO 라이브러리 .
이들 모두는 본질적으로 동일한 작업을 수행합니다 - 데이터베이스에 연결하고 쿼리를 보내는 것은 다른 코드를 사용하여 달성합니다. MySQL 라이브러리는 데이터베이스에 연결하는 가장 오래된 방법이며 PHP 2.0에 소개되었습니다. 포함 된 기능은 최소화되어 있으며 PHP 5.0 (2004 년에 출시) 기준으로 MySQLI에 의해 대체되었습니다.기존 MySQL 라이브러리를 사용하여 데이터베이스를 연결하고 쿼리하려면 mysql_connect () 및 mysql_query ()와 같은 기능이 사용됩니다. 이러한 기능은 PHP 5.5 이후로 피해야한다는 것을 의미하며, PHP 7.0 이후 PHP에서 완전히 제거되었습니다. 대부분의 개발자는 PHP 5.0이 출시 되 자마자 변경의 이유를 보았지만 지금은 존재하지 않는 MySQL_* 기능을 사용하여 웹에 여전히 수백 개의 기사와 코드 예제가 있습니다. 15 년 동안 선호하는 도서관. PHP 5.0에서 "MySQL 개선"을 위해 MySQLI 라이브러리가 릴리스되어 원래 MySQL 라이브러리의 일부 제한 사항을 해결했습니다. 코드는 mysqli_connect () 및 mysqli_query ()와 같은 함수를 사용하기 때문에 mysqli의 사용을 쉽게 식별 할 수 있습니다.
라인 mysql_connect ()가 포함 된 코드 예제를 발견하면 기사의 날짜를 확인하십시오. 아마도 2000 년대 초반부터 프로그래밍에서는 오래된 것을 믿어서는 안됩니다. 상황이 항상 바뀝니다. 그래서이 책은 제 7 판에 있습니다! PHP 5.0에서 MySQLI 라이브러리가 출시 된 직후, PHP 5.1이 출시되었으며, 오늘날 PHP를 작성하는 방식을 형성하는 데 도움이되는 상당수의 변경 사항이 있습니다 (주로 객체 지향 프로그래밍과 관련하여 볼 수 있습니다. 이 책의 나중에 많은 것들). PHP 5.1의 주요 변경 사항 중 하나는 MySQL 데이터베이스에 연결하기 위해 세 번째 라이브러리 PDO (PHP 데이터 객체)를 도입했다는 것입니다. PDO와 MySQLI 사이에는 몇 가지 차이가 있지만 주된 것은 PDO 라이브러리를 사용하여 Oracle 서버 또는 Microsoft SQL Server와 같은 거의 모든 데이터베이스 서버에 연결할 수 있다는 것입니다. 개발자의 경우이 일반적인 접근 방식의 가장 큰 장점은 라이브러리를 사용하여 MySQL 데이터베이스와 상호 작용하는 방법을 배운 후에 다른 데이터베이스 서버와 상호 작용하는 것이 매우 간단하다는 것입니다. 아마도 PDO에 대한 코드를 작성하는 것이 더 간단하며 PDO 코드를보다 읽기 쉽게 만들 수있는 뉘앙스가 있습니다. (걱정하지 마십시오. 나중에 그게 무슨 뜻인지 설명하겠습니다.) 이러한 이유로 가장 최근의 PHP 프로젝트는 PDO 라이브러리를 사용 하며이 책에서 사용하는 방법을 보여 드리겠습니다. 차이점에 대한 자세한 내용은 Sitepoint 기사“PDO 재 도입-PHP의 데이터베이스에 액세스하는 올바른 방법”을 참조하십시오.
작은 역사 수업 후에, 당신은 아마도 코드를 쓰기를 간절히 원할 것입니다. PDO를 사용하여 MySQL 서버에 대한 연결을 설정하는 방법은 다음과 같습니다. 지금은 2 장에서 사용한 랜드 기능과 마찬가지로 새로운 PDO를 내장 함수로 생각하십시오. 이름!”, 당신은 평균 곰보다 더 똑똑하고, 잠시 후에 무슨 일이 일어나고 있는지 정확히 설명하겠습니다. 어쨌든, 그것은 세 가지 인수를 취합니다 : . 인수를 제외하고, 여기에서 볼 수있는 것은 새로운 pdo가 반환 한 값이 $ pdo라는 변수에 저장된다는 것입니다.
데이터베이스 유형을 지정하는 문자열 (mysql :), 서버의 호스트 이름 (host = hostname;), 데이터베이스 이름 (dbname = database) PHP를 사용하려는 MySQL 사용자 이름 해당 사용자 이름의 MySQL 비밀번호2 장에서 PHP 함수는 일반적으로 호출 될 때 값을 반환한다는 것을 기억할 수 있습니다. 이 새로운 PDO "기능"은 설정된 연결을 식별하는 PDO 객체라는 값을 반환합니다. 연결을 사용하려고 하므로이 값을 변수에 저장 하여이 값을 보류해야합니다. 데이터베이스에 연결하는 데 필요한 값이 채워져있는 모습은 다음과 같습니다. - schema 라고도 함)를 사용하도록 지시합니다. PHP에서 실행되는 모든 쿼리는 해당 스키마의 테이블로 기본값입니다. 선택 * From joke는 IJDB 스키마의 농담 테이블에서 레코드를 선택합니다.
당신은 아마도 마지막 두 가지 인수로 무슨 일이 일어나고 있는지 볼 수 있습니다 : 그들은이 장의 앞부분에서 당신이 만든 사용자 이름과 비밀번호입니다. . 첫 번째 인수는 조금 더 복잡합니다. dbname = ijdb 부분은 pdo에게 ijdb라고 불리는 데이터베이스 ( PHP, PDO 및 MySQL에 익숙하더라도 호스트 = MySQL 부분은 혼란스러워 보입니다. 일반적으로 이것은 host = localhost (로컬 컴퓨터, 동일한 기계를 참조, PHP를 실행하는 동일한 기계를 참조) 또는 host = sitepoint.com. 와 같은 데이터베이스가 호스팅되는 특정 도메인 이름을 가리키는 것입니다. 왜 host = mysql이고, mysql은 여기서 무엇을 참조합니까? Docker에서는 각 서비스 에 이름이 표시됩니다. 서버를 구성하는 Docker-Compose.yml 파일을 검사하면 데이터베이스 서비스를 MySQL이라고하며 Docker에서는 한 서비스가 다른 서비스 이름을 사용하여 다른 서비스에 연결할 수 있습니다. MySQL 서버는 웹 서버와 완전히 별도의 소프트웨어입니다. 따라서 네트워크 중단으로 인해 서버를 사용할 수 없거나 접근 할 수 없거나 제공 한 사용자 이름/비밀번호 조합이 서버에 의해 거부되거나 MySQL 서버를 시작하는 것을 잊었 기 때문에 서버를 사용할 수 없거나 접근 할 수 없을 가능성을 고려해야합니다! 이 경우 새로운 PDO가 실행되지 않으며 PHP 예외를 던질 것입니다.참고 : 적어도 기본적으로 PHP는 예외가 발생하지 않고 단순히 연결되지 않도록 구성 할 수 있습니다. 이것은 일반적으로 바람직한 행동이 아닙니다. 잘못된 일을 해결하기가 훨씬 더 어려워지기 때문에
“PHP 예외를 던지는 것”이 무엇을 의미하는지 궁금하다면 스스로를 바꾸십시오! PHP 언어의 더 많은 기능을 발견하려고합니다. PHP 예외는 PHP에 작업을 수행하도록 지시 할 때 발생하며 수행 할 수 없습니다. PHP는 말한 것을 시도하지만 실패 할 것입니다. 그리고 실패에 대해 말하면 예외가 발생합니다. PHP가 특정 오류 메시지와 함께 충돌하는 예외는 예외입니다. 예외가 발생하면 PHP가 중지됩니다. 오류 후 코드 라인이 실행되지 않습니다.CREATE USER 'ijdbuser'@'%' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON `ijdb`.* TO 'ijdbuser'@'%';로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사.
책임있는 개발자로서, 프로그램이 계속 될 수 있도록 그 예외를 포착하고 그것에 대해 무언가를하는 것이 당신의 일입니다. 참고 : 예외를 포착하지 않으면 PHP는 PHP 스크립트 실행을 중단하고 화려한 못생긴 오류 메시지를 표시합니다. 이 오류 메시지는 오류를 던진 스크립트의 코드를 표시합니다. 이 경우 해당 코드에는 MySQL 사용자 이름과 비밀번호가 포함되어 있으므로 사용자가 표시하는 오류 메시지를 피하는 것이 특히 중요합니다!
예외를 잡으려면 시도와 함께 예외를 던질 수있는 코드를 둘러싸고 있어야합니다. 당신은 시도를 생각할 수 있습니다… If… else 진술과 같은 Catch 문, 두 번째 코드 블록이 첫 번째 코드 블록이 실행되지 않으면 발생한다는 점을 제외하고. > 아직 혼란 스럽습니까? 나는 내가 당신에게 많은 새로운 개념을 던지고 있다는 것을 알고 있지만, 모든 것을 모아서 우리가 가진 것을 보여 주면 더 의미가있을 것입니다 : .
$ e 변수에는 문제를 설명하는 오류 메시지를 포함하여 발생한 예외에 대한 세부 정보가 포함되어 있습니다. 연결을 사용하여 출력 변수에 이것을 추가 할 수 있습니다.보시다시피,이 코드는 시도한 것입니다… Catch 문입니다. 상단의 시도 블록에서는 새로운 PDO를 사용하여 데이터베이스에 연결하려고 시도합니다. 이것이 성공하면 새로운 데이터베이스 연결을 사용하여 결과 PDO 객체를 $ pdo에 저장합니다. 연결이 성공하면 $ 출력 변수가 나중에 표시 될 메시지로 설정됩니다. 중요하게도, 시도해 보면… 캐치 문서에서 예외가 발생한 후 모든 코드는 실행되지 않습니다. 이 경우 데이터베이스에 연결하면 예외가 발생하거나 (암호가 잘못되었거나 서버가 응답하지 않을 수도 있음) $ 출력 변수가 "데이터베이스 연결 설정"으로 설정되지 않습니다. 데이터베이스 연결 시도가 실패하면 PHP는 pdoexception을 던지며 새로운 PDO가 발생하는 예외 유형입니다. 따라서 우리의 캐치 블록은 pdoexception을 잡을 것이라고 말합니다 (그리고 그것을 $ e라는 변수로 보관할 것이라고 말합니다. 해당 블록 내부에서 우리는 무엇이 잘못되었는지에 대한 메시지를 포함하도록 변수 $ 출력을 설정했습니다. 그러나이 오류 메시지는 특히 유용하지 않습니다. PDO가 데이터베이스 서버에 연결할 수 없다는 것입니다. 예를 들어 사용자 이름과 비밀번호가 유효하지 않았기 때문에 왜 그런지에 대한 정보를 얻는 것이 좋습니다. 참고 : $ e 변수는 문자열이 아니라 객체입니다. 우리는 그게 곧 의미하는 바에 올 것입니다. 그러나 지금은 코드 $ e-> getMessage ()가 발생한 특정 예외에 따라 오류 메시지를 가져옵니다. if… else 진술처럼, 시도의 두 가지 중 하나… 캐치 진술은 실행되도록 보장됩니다. 시도 블록의 코드가 성공적으로 실행되거나 캐치 블록의 코드가 실행됩니다. 데이터베이스 연결이 성공했는지 여부에 관계없이 $ 출력 변수에 오류 메시지 또는 연결이 성공했다고한다는 메시지가 있습니다.CREATE USER 'ijdbuser'@'%' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON `ijdb`.* TO 'ijdbuser'@'%';로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사마지막으로, 시도 블록이 성공했는지 또는 캐치 블록이 실행되는지에 관계없이 템플릿 output.html.php가 포함되어 있습니다. 이것은 페이지에 텍스트를 표시하는 일반 템플릿입니다. object
완전한 코드는 예에서 찾을 수 있습니다 : MySQL-Connect 템플릿이 포함되어 있으면 오류 메시지 또는 "데이터베이스 연결"메시지가 표시됩니다. 앞서 언급 한 코드가 이제 당신에게 어떤 의미가 있기를 바랍니다. 이 섹션의 시작 부분으로 돌아가서 길을 잃어버린 경우 다시 읽어보십시오. 그러나 코드를 확실하게 잡으면 아마도 여전히 미스터리를 설명 할 수없는 PDOS를 남겼을 것입니다. 새로운 pdo는 정확히 무엇이며, 내가 "pdo 객체"를 반환한다고 말했을 때, 객체는 정확히 무엇입니까? 참고 : 모든 다운로드 된 샘플 코드에는 ijdb_sample이라는 스키마와 ijdb_sample이라는 사용자가 포함되어 있으므로 스키마 및 사용자에게 전화 한 내용에 관계없이 실행할 수 있습니다. 데이터베이스가 포함 된 파일은 데이터베이스로 제공되며 가져올 수 있습니다. 제공된 웹 기반 샘플 코드 뷰어를 사용하는 경우 샘플을로드 할 때 IDBJ_Sample 데이터베이스가 생성되지만 다른 샘플을 볼 때이 스키마의 변경 사항이 손실됩니다. (물건을 엉망으로 만들고 다른 샘플로 전환하고 뒤로 전환 할 수 있지만 변경 사항을 유지하려면 변경하려면 생성 한 스키마에서이를 만들 수 있습니다.) MySQL Workbench를 사용하여 샘플 데이터를 스키마에로드하려면 데이터 가져 오기/복원을 선택하여 프로젝트 디렉토리에서 Database.sql을 가져 오려면 샘플 데이터를 스키마에로드하려면 데이터 가져 오기를 선택하십시오. 그런 다음 자체 포함 파일에서 가져 오기를 선택하고 Database.sql로 찾아보고 기본 대상 스키마에서 스키마 이름을 선택하십시오. 같은 이름의 테이블을 만든 경우 덮어 쓰고 모든 레코드가 손실됩니다. 객체 지향 프로그래밍의 충돌 코스 당신은 이전 섹션에서 "객체"라는 단어가 내 어휘에 들어 오기 시작했을 것입니다. pdo는 php data 객체 확장이고, 새로운 pdo는 pdo 를 반환합니다. 이 섹션에서는 어떤 개체가 무엇인지 설명하고 싶습니다.
아마도 당신은 자신의 PHP 또는 일반적으로 프로그래밍에 대한 객체 지향 프로그래밍 (OOP)이라는 용어를 발견했을 것입니다. OOP는 많은 부분을 가진 정말 복잡한 프로그램을 구축하는 데 적합한 고급 프로그래밍 스타일입니다. 오늘날 활성으로 사용되는 대부분의 프로그래밍 언어는 OOP를 지원합니다. 그들 중 일부는 심지어 당신이 OOP 스타일로 일하기 위해 필요합니다. PHP는 그것에 대해 조금 더 쉬우 며 개발자에게 OOP 스타일로 스크립트를 작성할지 여부를 결정하기 위해 개발자에게 맡깁니다.
지금까지, 우리는 PHP 코드를 절차 프로그래밍이라는 더 간단한 스타일로 작성했으며 나중에 물체를보다 자세히 살펴 보면서 지금도 계속 그렇게 할 것입니다. 절차 스타일은 현재 우리가 다루고있는 비교적 간단한 프로젝트에 적합합니다. 그러나 거의 모든 복잡한 프로젝트를 사용하여 OOP를 사용하면이 책의 뒷부분에서 더 자세히 다룰 것입니다. . 즉, MySQL 데이터베이스에 연결하고 작업하는 데 사용할 PDO 확장 기능은 객체 지향 프로그래밍 스타일로 설계되었습니다. 즉, 단순히 MySQL에 연결하기 위해 함수를 호출 한 다음 해당 연결을 사용하는 다른 기능을 호출하는 대신 먼저 데이터베이스 연결을 나타내는 PDO 를 생성 한 다음의 기능을 사용해야합니다. 데이터베이스와 함께 작동하는 개체 객체를 만드는 것은 함수를 호출하는 것과 매우 흡사합니다. 실제로, 당신은 이미 그것을하는 방법을 이미 보았습니다 : 새로운 키워드는 PHP에게 새 개체를 만들려고한다는 것을 알려줍니다. 그런 다음 공간을 남기고 클래스 이름을 지정하여 PHP에게 어떤 유형의 객체를 생성 할 것인지 알려줍니다. 클래스는 PHP가 객체를 만들기 위해 따라야 할 일련의 지침입니다. 클래스는 케이크와 같은 레시피라고 생각하고 레시피를 따라 와서 생성되는 실제 케이크라고 생각할 수 있습니다. 다른 레시피가 다른 요리를 생산할 수있는 것처럼 다른 클래스는 다른 물체를 생산할 수 있습니다.
PHP에 호출 할 수있는 내장 기능이 많이 제공되는 것처럼 PHP는 객체를 만들 수있는 클래스 라이브러리와 함께 제공됩니다. 따라서 New PDO는 PHP에게 새로운 PDO 객체, 즉 내장 PDO 클래스의 새로운 객체를 만들도록 지시합니다. PHP에서 객체는 문자열, 숫자 또는 배열과 마찬가지로 값입니다. 변수에 객체를 저장하거나 다른 PHP 값과 함께 할 수있는 것과 동일하게 인수로 기능으로 전달할 수 있습니다. 그러나 객체에는 유용한 추가 기능이 있습니다.
우선, 객체는 다른 값의 컨테이너 역할을한다는 점에서 배열처럼 동작합니다. 2 장에서 보았 듯이 인덱스 (예 : $ Birthdays [ 'Kevin'])를 지정하여 배열 내부의 값에 액세스 할 수 있습니다. 객체와 관련하여 개념은 비슷하지만 이름과 코드는 다릅니다. 배열 인덱스에 저장된 값에 액세스하기보다는 객체의 속성에 액세스하고 있다고 말합니다. 액세스하려는 속성의 이름을 지정하기 위해 사각형 브래킷을 사용하는 대신 화살표 표기법 (->)을 사용합니다.유사한
배열은 일반적으로 값 (예 : 생일 배열) 목록을 저장하는 데 사용되는 반면, 객체는 관련CREATE USER 'ijdbuser'@'%' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON `ijdb`.* TO 'ijdbuser'@'%';로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사값 목록을 저장하는 데 사용됩니다 (예 : 데이터베이스 연결의 속성). 그럼에도 불구하고, 그것이 모든 객체가 한 경우, 그들에게 많은 점이 없을 것입니다. 우리는 배열을 사용하여 이러한 값을 저장할 수도 있습니다. 물론 물체는 더 많은 일을합니다.
속성 모음과 그 값을 저장하는 것 외에도 객체에는보다 유용한 기능을 제공하도록 설계된 함수 그룹이 포함될 수 있습니다. 객체에 저장된 함수를 메소드 (프로그래밍 세계에서 더 혼란스러운 이름 중 하나)라고합니다. 메소드는 클래스 내에서 단지 함수 일뿐입니다. 더 혼란스럽게도, 우리가 자신의 수업을 작성할 때, 메소드는 함수 키워드를 사용하여 정의됩니다! 숙련 된 개발자조차도 종종 기능 및 를 잘못 사용합니다. 메소드를 호출하려면 다시 화살표 표기법을 사용합니다-$ myObject-> somemethod () : 독립형 함수와 마찬가지로 메소드는 인수와 반환 값을 취할 수 있습니다. 이 단계에서는 아마도 약간 복잡하고 무의미하게 들리지만 나를 믿으십시오 : 변수 (속성)와 함수 (메소드)의 객체라고 불리는 작은 번들로의 수집을 모으면 훨씬 더 깔끔하고 읽기 쉽습니다. 특정 작업에 대한 코드 - 데이터베이스로 작업하는 것은 그 중 하나 일뿐입니다. 언젠가는 자신의 고안의 객체를 만드는 데 사용할 수있는 맞춤형 클래스를 개발할 수도 있습니다. 그러나 현재는 PHP에 포함 된 수업을 고수 할 것입니다. 우리가 만든 PDO 객체로 계속 협력하고 그 방법 중 하나를 호출하여 무엇을 할 수 있는지 살펴 보겠습니다. 연결 구성 지금까지 MySQL 데이터베이스와 연결을 설정하기 위해 PDO 객체를 작성하는 방법과 무언가 잘못 될 때 의미있는 오류 메시지를 표시하는 방법을 보여주었습니다. 연결이 성공한다고 가정하면 사용하기 전에 구성해야합니다. 새로운 PDO 객체의 일부 메소드를 호출하여 연결을 구성 할 수 있습니다. 쿼리를 데이터베이스로 보내기 전에 데이터베이스 연결의 문자 인코딩을 구성해야합니다. 2 장에서 간략하게 언급했듯이 웹 사이트에서 UTF-8 인코딩 된 텍스트를 사용하여 사이트에서 양식을 작성할 때 사용자가 자신의 처분에 대한 문자 범위를 최대화해야합니다. 기본적으로 PHP가 MySQL에 연결되면 UTF-8 대신 더 간단한 ISO-8859-1 (또는 라틴 -1) 인코딩을 사용합니다. 우리가 그대로두면 중국어, 아랍어 또는 대부분의 영어가 아닌 문자를 쉽게 삽입 할 수 없습니다. 웹 사이트가 영어 사용자 만 사용한다고 100% 확신하더라도 문자 세트를 설정하지 않아 발생하는 다른 문제가 있습니다. 웹 페이지가 UTF-8으로 설정되지 않은 경우 사람들이 곱슬 인용문과 같은 특정 문자를 텍스트 상자에 쓸 때 문제가 발생합니다. 데이터베이스에 다른 문자로 표시되기 때문입니다.
.따라서 이제 UTF-8 인코딩을 사용하도록 새로운 PDO 객체를 설정해야합니다. 우리는 연결을 통해 데이터베이스를 쿼리 할 때 PHP에 UTF-8을 사용하도록 지시 할 수 있습니다. charset = utf8mb4는 연결 문자열에 있습니다. PHP 스크립트가 UTF-8 (최근 PHP 버전의 기본값 인)으로 브라우저로 전송되는 경우이 작업을 수행하는 단점이 없습니다. 참고 : 검색을하러 가면 숯불을 설정하는 다른 방법을 찾을 수 있으며이 책의 이전 버전은이 코드를 사용하도록 지시했습니다.
PHP 5.3.6까지 Charset 옵션이 PHP에 의해 올바르게 적용되지 않았기 때문입니다. 실제로 사용하려는 모든 PHP 버전에서 고정되어 있으므로 연결 문자열의 일부로 숯을 설정하는 것이 선호 옵션입니다.
MySQL에 연결 한 다음 해당 연결을 구성하는 데 사용하는 전체 코드는 다음과 같습니다. 예 : MySQL-CONNECT-COMPLETE 입니다.
브라우저 에서이 예를 발사하십시오. (템플릿 디렉토리에있는 공개 디렉토리와 output.html.php 파일에 데이터베이스 코드를 index.php에 배치 한 경우 페이지의 URL은 https://v.je/.) 서버가 시작되고 실행 중이며 모든 것이 제대로 작동하는 경우 성공을 나타내는 메시지가 표시됩니다. CREATE USER 'ijdbuser'@'%' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON `ijdb`.* TO 'ijdbuser'@'%';로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사
PHP가 MySQL 서버에 연결할 수 없거나 제공 한 사용자 이름과 비밀번호가 잘못된 경우 아래에 표시된 것과 유사한 화면이 표시됩니다. 오류 처리 코드가 올바르게 작동하는지 확인하려면 비밀번호를 의도적으로 철자로 철회하여 테스트 할 수 있습니다. 캐치 블록 덕분에 데이터베이스의 오류 메시지가 페이지에 포함되었습니다. CREATE USER 'ijdbuser'@'%' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON `ijdb`.* TO 'ijdbuser'@'%';로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사getMessage () 메소드는 발생한 예외를 설명하는 메시지를 반환합니다. getfile () 및 getline ()을 포함한 다른 방법이 있습니다. 예외가 발생한 파일 이름과 줄 번호를 반환합니다. 다음과 같은 매우 상세한 오류 메시지를 생성 할 수 있습니다. 스크립트가 실행 된 후 MySQL 서버와의 연결에 어떤 일이 발생하는지 궁금 할 것입니다. 실제로 원한다면 연결을 나타내는 PDO 객체를 폐기하여 PHP가 서버에서 분리하도록 강요 할 수 있습니다. 객체를 포함하는 변수를 null로 설정하여 다음을 수행합니다.
이것은 수십 개의 포함 파일이있는 큰 웹 사이트가있는 경우 매우 유용합니다. 오류 메시지는 정확히 어떤 파일을 찾아야하고 어떤 오류가 발생했는지 알 수 있습니다. 궁금한 점이 있다면 데이터베이스 연결 코드 (예 : 틀린 데이터베이스 이름)에 다른 실수를 삽입하고 결과적으로 상세한 오류 메시지를 관찰하십시오. 완료되면 데이터베이스 연결이 올바르게 작동하면 간단한 오류 메시지로 돌아갑니다. 이렇게하면 데이터베이스 서버에 진정한 문제가 발생하면 방문자가 기술적 인 GOBBLEDYGOOK에 충격을받지 않습니다. 연결이 설정되고 데이터베이스가 선택된 상태에서 데이터베이스에 저장된 데이터를 사용할 준비가되었습니다. 즉, PHP는 스크립트 실행을 완료 할 때 열린 데이터베이스 연결을 자동으로 닫으므로 일반적으로 PHP를 정리할 수 있습니다.new PDO('mysql:host=hostname;dbname=database', 'username', 'password')로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사php로 SQL 쿼리 보내기 3 장에서는 MySQL Workbench를 사용하여 MySQL 데이터베이스 서버에 연결하여 SQL 쿼리 (명령)를 입력하고 해당 쿼리의 결과를 즉시 볼 수있었습니다. PDO 객체는 유사한 메커니즘을 제공합니다.
여기, $ query는 실행하려는 SQL 쿼리를 포함하는 문자열입니다. 아시다시피, 쿼리를 실행하는 데 문제가있는 경우 (예 : SQL 쿼리에서 입력 실수를 한 경우),이 메소드는 PDOException을 포착 할 수 있습니다. .
다음 예를 고려하십시오.이 예는 3 장에서 우리가 만든 농담 테이블을 제작하려고합니다. 예 : mysql-create
위 내용은 웹에서 MySQL에서 데이터 표시 : 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!