PHP, MySQL, and PDO – Part 1

안녕하십니까 MySQL, PDO 및 PHP 강의를 환영합니다

자, 만약 네가 내내이 모든 강의를 듣고 있다면 HTTP, HTML, SQL, PHP로 시작하는 포인트 PHP 객체 지향, 그리고 당신은 학습 조각의 일종되었습니다 그리고 이것은 모두 함께 모일 장소입니다 우리가 가르친 모든 단어를 사용할 수 있습니다 이제 처음으로 이것을보고 있으면 다시 돌아갈 수 있습니다 따라 잡기 위해 다른 것들을 지켜보십시오

사촌, 나는 단지 내가 사용하는 단어를 사용하기 시작할거야 이전 물건에서 다룰 수 있기를 바랍니다 그러나, 당신이 나와 함께 있고 당신이 나와 함께 있다면, 그때까지 이것을 축하드립니다 좀 행복한 춤을 추자 행복한 댄스도 할 수 있습니다

당신은 여기 있습니다, 당신은 열심히 일했습니다 이제 실제로 모든 조각을 연결하기 시작할 수 있습니다 텔레비전에 5 등 높은 우리가 간다, 우리는 최고 5를 얻는다 따라서, PDO를 사용하여 MySQL에 액세스하여이 모든 것을 하나로합시다

그래서, 여기 제가 좋아하는 다이어그램입니다, 누군가는 아마 훨씬 더 아름답게 만들 것입니다 다이어그램을 만들었지 만 브라우저에 대한 모든 정보를 캡처해야합니다 웹 서버와 데이터베이스 서버 우리는 이제 우리가 원하는 것을 할 것이며, 요청을 보냅니다 실행되고 코드가 실행될 것이고 이것은 우리가 처음으로 할 일입니다

우리는 PDO 라이브러리를 사용하여 데이터베이스에 다른 연결을 만들 것입니다 서버, 해당 연결을 통해 일부 SQL을 보냅니다 SQL은 우리가 사랑하는 마술과 슈퍼 굉장한 마법 물건을 할 것입니다 레코드 세트라고 불리는 것을 우리에게 돌려 보내십시오 우리는 레코드 세트를 읽는 루프를 작성합니다

그리고 천천히 그러나 확실히, HTML을 생산합니다 HTML, 우리는 돌아올 것이고 우리는 페이지를 가질 것이다 그래서 처음으로 동적 콘텐츠를 갖게 될 것입니다 궁극적으로 데이터베이스에서 나온 화면에 나타납니다 그래서 결국 마침표가 끝날 것입니다

자바 스크립트에 대해 더 많은 것을 배웠고, 자바 스크립트에 대해서도 이야기를 시작하지 않았습니다 여기에 모든 종류의 마법이 있습니다하지만 우리는 그렇게하지 않습니다 우리가하고있는 일은 마침내 그것을 끝내고 있습니다 PDO가 오늘 우리가 이야기 할 내용입니다

그리고 우리가 마침내하는 또 다른 일은 우리가 마침내 우리가 시작한이 다이어그램을 마칩니다 이것이 바로 이러한 웹 동적 콘텐츠 웹 응용 프로그램의 작동 방식입니다 애플리케이션 소프트웨어가 있습니다 우리의 경우에는 PHP로 작성하고 있습니다 그리고 요청 응답주기를 수행하고 데이터베이스와 통신하고 HTML을 다시 보내고 개발자는이 코드를 작성합니다

개발자는이 코드를 작성하고 있습니다 데이터베이스 관리자가 phpMyAdmin에 대해 이야기합니다 그래서 우리는이 일을 조금 해냈습니다 우린 좀 친절 해 우리는 PHP 코드를 작성했습니다

그러나 이제 우리는 마침내 모든 방법으로 마침내 할 것입니다 그래서이 모든 것들이 마침내 함께 연결될 것입니다 우리가 일, 주, 또는 달 전에했던이 사진에서, 알았지? 그래서 저는 PHP가 진화하고 있다고 종종 말합니다 이것이 PHP에 대해 매력적인 점 중 하나입니다 그것은 진화하고 있습니다

많은 언어가 발전하고 있지만 PHP는 매우 훌륭합니다 당신은 물건의 앞뒤 호환성을 가질 수 있습니다 조금 일찍 뭔가를하고 싶다면 그걸 끌어 당길 수 있습니다 또는 PHP가 가져온 것을 유지하고 싶다면, 당신은 그것이 존재하고 당신이 그것을 가지고 있는지를 확인하기 만하면됩니다 데이터베이스와 PHP 5에 액세스하는 방법이 변경되었습니다

PHP 5 이전에는 이러한 mysql 루틴이있었습니다 그리고 우리가 객체 지향에 대해서 이야기했을 때, 나는 모든 것을 말했습니다 객체 지향이없는 경우에는 접두사를 붙입니다 그래서 그들은 mysql_, mysql_connect, mysql_query, mysql_ this를 가지고있었습니다 글쎄, 객체 오리 엔테이션 따라 오면, 그들은 같은, 객체 지향 패턴을 사용하여 모든 함수의 이름을 지정할 수 있습니다

그래서 그들이 한 첫 번째 일은 제가 아주 좋아하지 않는 도서관입니다 나는 이것을 아주 좋아하지 않으며 나는이 다른 것을 좋아하지 않는다 그것은 정말로 친절하다 접두사를 꺼내는 것과 그것을 당신이했던 것과 같이 할 수있는 대상으로 만듭니다 date_ 및 date 시간 객체 그러나 그들은 또한 다시 생각할 기회를 가졌다

처음부터 데이터베이스를 구축하는 올바른 방법 그리고 그들은 이것에 관해 많은 것들을 알게되었습니다 그들은 Java에서 JDBC라고 불리는 Java와 다른 데이터베이스 패턴에 대한 정보를 얻었습니다 여러 언어로 이식 할 수 있기를 원했습니다 SQL과의 대화를 원할 경우, 당신은 일련의 SQL 함수들을 가지고있었습니다

SQL Lite는 SQL Lite 함수를 사용했습니다 mysql에는 mysql 함수가있다 휴대용 부분 인 PDO는 Oracle에서 작동하거나 MySql, SQLite에서 작동하며, Microsoft SQL Server와 함께 작동합니다 데이터 객체는 API를위한 객체 지향 패턴이지만 그것은 또한 당신에게 더 많은 객체 지향 방식으로 레코드 세트를 돌려줍니다 나는 훌륭한 PDO가 얼마나 많은지 계속해서 들어갈 수있었습니다

나는 PDO가 훌륭하다고 말하고 싶습니다 전에 한 일들, 처음 보았을 때 좀 이해 했어 PDO는 다르다 나는이 다른 것들에 익숙하다 그러나 소년, 일단 당신이 그것을 사용하기 시작하면 당신은 소년, 우리가 어떻게 그 진절머리 나는 mysql_ 물건으로 살아남을 수 있었습니까? 그래서 인터넷에서 다른 것들을 볼 수는 있지만, 나는 내가 염려하는 한 논쟁의 여지가있는 척하지 않을거야

PDO를 사용하지 않는다면 많은 이유로 어리석은 행동입니다 우리가 앞으로 나아갈 때 그 이유 중 일부에 대해 이야기하겠습니다 그래, 네가해야 할 일은 데이터베이스를 만들어야한다는거야 당신은 이미 이것을하거나 새로운 것을 만들었을 것입니다 그래서 데이터베이스를 만드십시오

그리고 나서, 당신이 전에하지 않은 일은이 부여 명령들입니다 그래서 이것들은 당신이 mysql에 입력하는 것들이다 그리고 당신이 기본적으로하고있는 것은 모든 테이블을 잡아 먹는 것입니다 * 모든 테이블 그 기타 데이터베이스에있는 계정에 여기에 원하는 것을 넣을 수 있습니다

@localhost, 이것은 일종의 IP 필터링입니다 컴퓨터 외부에서 이러한 것들에 연결할 수 없다는 것은 정말로 좋은, 그래서 귀하의 MySQL은 인터넷에 데이터를 수출하지 않습니다 그리고 이것은 기본적으로 제한적입니다 내가 만들고있는 Fred 계정은 로컬 호스트에서만 1270

01까지 사용할 수 있습니다 이것들은 똑같은 두 가지입니다 그리고 이것은 GRANT ALL ON MISK Fred에 의해 식별 된 패스워드입니다 그래서 이것은 ID와 패스워드가됩니다

때로는 mysql이 그것을 로컬 호스트로보고 때로는 127001로 보게된다 아마도이 두 가지 중 하나 또는 둘 다를 필요로 할 것입니다

나는 단지 내가 필요로하는 것을 알아내는 것을 괴롭히는 것을 원하지 않는다 좋아요, 그리고 나서 그 데이터베이스로 전환 할 것입니다 그래서 우리는 테이블을 만들거야 그리고 데이터베이스를 만드십시오 원한다면 기타를 떨어 뜨리고 다시 만드십시오

그런 다음 테이블을 만들고 기본 테이블을 만들 것입니다 지금까지, 나는 우리가 SQL을 한 이후로 꽤 오랜 시간이 걸렸 으면 좋겠다 하지만 네가 그걸 기억하길 바란다 그렇지? 우리는 사용자라고 불리는 테이블을 만들 것입니다 그것이 테이블의 이름입니다

거기에 기둥이 몇 개있을거야 기본 키인 user_id를 갖게됩니다 우린 이름을 가질거야 우리는 이메일과 암호를 갖게 될 것입니다 모두 128 자입니다

그리고 우리는 이메일에 대한 색인을 만들 것입니다 그것은 논리적 인 키를 말하는 우리의 방식의 일종이며 이메일은 논리적 인 열쇠입니다 InnoDB, 이것은 외래 키를 만드는 것입니다 외래 키의 실행이 작동하면 CHARSET = utf8을 말합니다 그래서 우리는 비 라틴 문자를 넣고 괜찮습니다

그래서, 그냥 가서 테이블을 만들어보십시오 테이블을 만드는 방법을 기억하지 못한다면, 우리가 아주 상세하게 그랬던 SQL 강의로 다시 돌아가십시오 이제는 몇 명의 사용자를 넣자 사용자 이름, 전자 메일 및 암호에 삽입하십시오 여기, 척과 암호는 123이고, 글렌과 암호는 456입니다

맞습니까? 그래서 우리는 사용자 데이터베이스에 몇 가지 레코드를 만들었습니다 그리고 우리는이 자동 증가 필드를 가지고 있기 때문에, 우리는 csev 및 gg@umichedu의 기본 키를 효과적으로 얻고 있습니다 이제 우리가 만든 것은 MySQL 서버에 앉아서, 우리는 사용자 테이블을 가진 misc라는 데이터베이스를 가지고 있습니다 그리고 우리는 다른 데이터베이스를 가질 수도 있고, 그 안에 많은 테이블이있어 괜찮습니다

사촌 MySQL은 그냥 그들을 분리합니다 그리고 이제, 우리가 할 일은 우리가 당신에게 어떻게 보여줄 것인가입니다 실제로 PHP에서 해당 데이터베이스에 로그인하십시오 좋아, PHP 요청의 중간에있다 이제 데이터베이스에 로그인하고 싶습니다

그리고 당신은 객체 지향 패턴으로 이것을합니다 그래서, 내 변수 pdo의 이름을 짓고 있는데, 이것은 내가 신경 쓰는 모든 것에 대해 $ x 일 수 있습니다 그것은 정말로 중요하지 않습니다 $는 새로운 pdo와 같습니다 pdo는 클래스입니다

오브젝트 트레이닝 강의가 얼마나 유용할까요? PDO는 클래스입니다 템플릿을 사용하면 변수를 되돌릴 수 있습니다 생성자의 일부로 세 개의 매개 변수를 제공합니다 첫 번째는 우리가 연결 문자열이라고 부르는 연결이며, 그것은 정의 된 것입니다 당신은 PDO 문서를 찾아 볼 수 있습니다

여기에 우리가 MySQL 데이터베이스에 연결할 것이고, 호스트는 localhost입니다 생산 과정에서, 일반적으로 데이터베이스는 응용 프로그램과 다른 하드웨어에 있습니다 그러나 귀하의 랩톱에서, 그것은 똑같을 것입니다 그래서 localhost는 마치 다른 데이터베이스 서버에 가지 않을 것입니다 그러나 제작 과정에서 이것을 localhost와는 아주 다른 것으로 만들 수도 있습니다

그리고 나서 여러분은이 포트가 실제로 TCP IP 일까를 말해야합니다 우리가 여기에서하고있는 연결과 MAP가있는 Mac을 사용한다면 포트 80 89입니다 그리고 XAMP를 사용하고 있거나 Linux를 사용중인 경우 일종의 정상 3306은 일반적인 기본값이고, MAMP의 이상한 기본값은 8888입니다 그런 다음 데이터베이스 이름을 넣어야합니다이 이름이 데이터베이스의 이름입니다

많은 데이터베이스를 가질 수 있다는 것을 기억할 수 있기 때문에 우리는 PHP MyAdmin을 가지고 놀 때 그것을 보았습니다 그런 다음 암호를 입력해야합니다 그래서 이것은 PHP에서 단 한 줄의 코드로 끝납니다 [소리] 그리고 그것은 연결을 만듭니다 연결을 통해 명령, SQL 명령을 보낼 수 있습니다

이제 SQL은 이미 알고 있지만, 이제는 PHP가 뭐든지, 삭제, 삽입,이 모든 연결을 통해 전송됩니다 그래서이 변수는 OpenFile과 매우 흡사합니다 변수는 액세스 및 이것에 데이터를 보내십시오 언어 SQL에있는 명령을 보내십시오 우리가 만든이 PDO 연결을 통해 결과를 얻으십시오 그러나 그것은 시스템에 로그인하는 것과 같습니다 그리고 새로운 요청 응답주기가 생길 때마다 로그인 할 것입니다

당신이 할 첫 번째 일 중 하나는 데이터베이스에 로그인 한 다음 그곳에 로그인하는 것입니다 명령을 보내고 데이터를 되 찾을거야 그리고 우리는 그것이 어떻게 작동하는지 볼 것입니다 여기 슈퍼, 초보 단순 응용 프로그램이 있습니다 그래서, 이것은 PHP 프로그램입니다

그것은 물음표 php보다 적게 시작합니다, 나는 pre 태그를 원합니다 좋아요, 그래서 모든 것이 멋지게 보입니다 그리고 첫 번째 줄은 이러한 매개 변수를 사용하여 데이터베이스에 연결하고, fred와 zap은 계정과 암호입니다 그리고 나서, 이제 $ pdo 객체 내에서 query 메소드를 호출 할 것입니다 내 변수 $ pdo에 있습니다

그리고 나는 어떤 문자열을 전달합니다 phpMyAdmin 또는 MySQL 명령 행에 입력 할 수있는 동일한 문자열 방금 보내십시오 그래서 그것은 당신이 만든 연결을 통해 그것을 데이터베이스로 보냅니다 그리고 나서 돌아 오는 것은 기록적인 세트입니다

그리고이 달러를 사용하여 액세스 할 수있는 레코드 집합을 다시 얻습니다 그리고 이것은 파일 핸들과 비슷합니다 레코드 세트에 대한 핸들입니다 너는 그것을 반복 할거야 일정한 행이있을거야

당신은 마지막 한 번에 도착했을 때 당신에게 말하게 될 것입니다 한 번에 한 줄씩 읽으 실 겁니다 따라서 명령문 불러 오기를 호출 할 때마다 명령문 레코드 세트 내의 fetch 메소드 이것은 그것을 가져 오는 방법입니다, 단지 지금 우리는 그것을 내버려 둘 것입니다, 우리는 그것에 대해 조금 이야기 할 것입니다 따라서 가져 오기를 호출 할 때마다 가져 오기를 호출 할 때마다 너는 새로운 행을 얻는다 그리고 당신이 행을 다 쓰면 당신은 거짓이됩니다

그래서 우리는 여기에 속임수로 쓰고 있습니다 그래서 다음 행을 갖게 될거야, 아니면 거짓말이 될거야 어떤 경우에 그것은 루프를 떠날 것입니다 좋아요, 그래서 우리는 이것을 괄호처럼 넣을 수 있습니다 평등하지는 않습니다

동등한, 틀린, 그러나 그것은 함축 된의 종류이다, 나는 거기에 너무 많은 동등한 것을 가졌다 나는 그것에 대해 미안하다 그러나 거기에는 다소 암시가 있습니다 이것은 합법적 인 행이있는 한 루프를 실행합니다 행에 실제 데이터가 있으면 거짓이 아닙니다

그리고 매번 루프를 통해 할 일은 print_r을 사용하여 행을 인쇄하려고합니다 그리고 나서,이 select 문이 가져 오는 많은 행이 실행됩니다 데이터베이스와 우리는 그것을 인쇄하고 있습니다 그래서, 행을주고, 줄을주고, 줄을 내라 행이 끝났어? 좋아요, 그만 해요

그게 여기서 일어나는 일입니다 그리고 이것이 이것이 테이블에있는 것을 감안할 때, 이것은 우리가 보는 것입니다 그리고 이것은, 나에게,이 가져 오기 동료의 아름다운 비트는 각 행은 키 – 값 쌍을 가진 연관 배열이며, 여기서 열 이름은 문자열 키입니다 그래서 user_id, name, email 그래서 그것들은 실제로 문자열입니다

따옴표는 표시하지 않습니다 그것들은 실제로 문자열입니다 사용자 ID는 1, 이름 매핑은 척, 이메일 맵은 csev, 비밀번호 맵은 123, 그래서이 첫 번째 줄은 배열로 여러분에게 돌아옵니다 그리고 우리는 그 행에 더 많은 것을 할 것입니다, 왜냐하면 지금 우리는 단지 그것을 버리고 있습니다 디버깅을하면 올라가서 다시 실행됩니다

도착하면 다시 올라가서이 행을 얻습니다 그리고 그것은 들어오고 나서 그것을 출력합니다, 그래서 우리는 바로 그 부분을 보았습니다 기본 키는 2이고 이름은 Glenn입니다 마치 파일을 읽거나 아무것도 읽지 우리는 일련의 배열을 얻고 있습니다

행당 하나의 배열 내 생각 엔, fetch all은 배열 배열을 제공합니다 그리고 당신이 정말로 그렇게하기로되어 있지 않기 때문에 그것에 대해 갈 수있는 나쁜 방법은 아닙니다 어쨌든 단일 선택문을 통해 수조 수조를 가져옵니다 그래서 가장 단순한 예가 될 것입니다

처음으로 간단한 예제를 고수하고 너무 복잡하지 않아야합니다 좋아,하지만 일반적으로, pretag 및 print_r을 데이터로 가지는 응용 프로그램을 작성하고 싶지는 않습니다 그리고 이것은 이것보다 위에있는 모든 것입니다 여기에서부터, 그것은 동일합니다 그리고 여기에서, 여기 아래로 그것은 그렇지 않습니다, 꽤 아닙니다

그래서 우리는 테이블을 인쇄 할 것입니다 그래서 우리는 HTML 표를 인쇄하고 테두리는 한 줄의 새 줄과 같게 인쇄하고이 줄을 인쇄합니다 그럼, 우리는 반복하는 동안 그것을 할 것입니다 그리고 매회 루프에서 우리는 tr와 td를 출력 할 것입니다 그런 다음 이름을 인쇄합니다

그런 다음 / td를 인쇄합니다 td를 시작하십시오 바로 여기에있는 비트입니다 그런 다음 이메일을 출력 해 보겠습니다 그런 다음 / td를 인쇄하고 td를 시작합니다

그런 다음 암호를 인쇄합니다 123 이것은 매우 안전한 시스템이며, 암호를 바로 인쇄합니다 아름다워 그것은 훨씬 쉽게, 그리고 우리는 td와 tr 끝내고, 우리는 끝에 새로운 줄을 던져서 꽤 보입니다 그런 다음 우리는 올라가서 새로운 행을 잡고 똑같은 일을합니다

그리고 우리가 세 번째로 이것을 명중하면 이것이 거짓이됩니다 그것은 나오고 인쇄 / 테이블과 그 렌더링처럼 그리고이 아이디어는 데이터베이스로 가서 레코드 집합을 되 찾으십시오 레코드 세트를 반복하면서 HTML을 생성합니다 여기서 우리가하는 일입니다

우리는 레코드 세트를 읽고 있으며 echo 문을 사용하여 그것을 HTML로 변환합니다 이제는보다 정교한 환경에서, 이 변환 등을 수행하는 템플릿이 있습니다 그리고 이렇게, 다른 방법이 있습니다 그러나 이것은 레코드 세트를 HTML로 바꾸는 기본적인 아이디어입니다 잠시 후 select 문을 보내고 그런 다음 데이터로 작업하고 데이터로 만족스럽게 무엇이든 할 수 있습니다

그것을 추가하고, 그것을 인쇄하고, 당신이하는 일을 누가 아는 지, 그렇지? 당신은 그 시점에서 모든 힘을 가지고 있습니다 그것은 단순한 개념이고 절대적으로 아름답습니다 그래서, 우리가하는 패턴으로서의 것들 중 하나는 우리가 싫어한다는 것입니다 이 파일을 모든 파일의 시작 부분에 넣습니다 사촌, 말 그대로, 결국에는 10 개 또는 12 개의 파일을 갖게 될 것이고 그들은 모두 데이터베이스 연결을 원할 것입니다

따라서 모든 데이터베이스, 모든 연결에 암호를 넣고 싶지는 않습니다 그래서 우리는이 코드를 약간 다시 짜서 한 파일에서 가져 왔습니다 그것의 일부를 하나의 파일에 넣고 그 일부를 다른 파일에 넣고 include를 사용하십시오 그래서 GitHub 같은 것을 사용하고 있다면, 그렇게하지 않게됩니다 당신이 GitHub에 데이터베이스 암호를 확인하고 싶지 않아요

그것은 보안 구멍의 종류이기 때문에 사람들이 당신의 GitHub을 읽을 수 있다면 특히 그렇습니다 그리고 우리가하는 일은 PDO 비트를 취하는 것입니다 우리는 그것을 pdophp와 같은 파일에 저장합니다 우리가하는 일은 아마도 PDO의 부작용으로 무언가를 할 것입니다

이제이 집합 속성은이 항목이 무엇인지, 실제로 무엇인지, 디스플레이 오류와 비슷합니다 그것은 말하고있다, 제발 내 SQL 사촌에 구문 오류를 만들 때 날려 버리십시오 기본값은 계속 진행하는 것입니다 SQL이 좋지 않을 경우 SQL이 의미하는 바는 다음과 같습니다 나쁜 것은 SQL과 같아서 사용자가 선택한 별이 옳지 않습니다

그래서, 당신은 그것을하고 싶지 않습니다 그래서 나는 이것을 넣었습니다 제가 PDO에서 실수를한다면, 말하기에 좋은 것입니다 나는 대부분 개발하고 있기 때문에 완전히 날려주세요 너는 이것을 바꿀 수있어

아마도 생산 단계에서 그러나 개발 단계에서, 그것은 디스플레이 오류와 같습니다 지금은 그만 뒀어 내가 뭘 잘못했는지 세부 정보를 얻고, 무슨 일이 일어나는지 말해 그러나 그것은 우리가 현재하고있는 것이 아닙니다 지금 우리가하고있는 일은 단지 한 번만 요구한다는 것입니다

pdophp, 우리는 pretag를 내고 있습니다, 우리는 이것을 당기고 있습니다, 한 번만 pdophp를 요구하십시오 그래서 thirdphp에는 이들 중 하나와이 중 많은 것이 있습니다

맞습니까? 그래서, 이것은 무엇이든간에, 당신과 당신의 사건입니다 너의 책과 너는 무엇이든간에, 맞지? 물건의 무리 따라서 액세스 권한이 필요한 각 파일에는 require_once pdophp가 있습니다 그리고 암호를 한 번만 넣으면됩니다

나머지는 똑같습니다 그래서 여러분은 3, 4, 5, 10, 11 그리고 그들은 모두 pdophp 만 필요합니다 나는 그것에 대해 너무 많이 이야기했을 것입니다 좋아요, 그럼 우리가 할 일은 실제로 데이터의 일부를 삽입하는 것입니다

PHP를 데이터베이스에 저장합니다 [음악]