• PHP 편
  • MySQL 편
  • 1수업 소개 252
    • 학습목표이 수업의 내용과 목표를 확인한다.
    • 동영상https://youtu.be/NChP-7KMQ_U (03분 33초)
  • 2PHP와 MySQL의 연동 원리 255
    • 학습목표PHP와 MySQL을 연동하는 전체적인 그림을 그리고 두 기술이 상호작용하는 원리를 이해한다.
    • 동영상https://youtu.be/3CqyUdsB47M (11분 07초)
  • 3.1수업 준비(웹) 267
    • 학습목표수업 진행을 위해 웹과 데이터베이스 측면에서 준비해야 할 사항을 배운다.
    • 동영상https://youtu.be/51xHaTWqXCU (02분 12초)
    • 예제【5-3-1】 index.php 파일 생성
  • 3.2수업 준비(데이터베이스) 269
    • 학습목표수업 진행을 위해 웹과 데이터베이스 측면에서 준비해야 할 사항을 배운다.
    • 동영상https://youtu.be/qVrEUYcDesk (06분 41초)
    • 예제【5-3-2】 opentutorials 데이터베이스 생성
    • 【5-3-3】 opentutorials 데이터베이스 생성 확인
    • 【5-3-4】 사용할 데이터베이스 변경
    • 【5-3-5】 topic 테이블 생성
    • 【5-3-6】 테이블이 잘 생성됐는지 확인
    • 【5-3-7】 테이블의 구조 확인
  • 4MySQL 클라이언트로서의 PHP 273
    • 학습목표PHP가 MySQL 클라이언트로서 어떤 역할을 수행하고 어떻게 동작하는지 이해한다.
    • 동영상https://youtu.be/wKD_ZjyNn3U (02분 21초)
  • 5MySQL API 찾기 275
    • 학습목표PHP와 MySQL을 연동하기 위한 수단인 MySQL API를 이해하고 기본적인 API 검색 방법과 사용법을 배운다.
    • 동영상https://youtu.be/SR00gij8lr4 (04분 33초)
  • 6.1mysqli_connect 279
    • 학습목표웹 애플리케이션에서 사용할 주요 MySQL API의 기능과 사용법을 익힌다.
    • 동영상https://youtu.be/3tVZvEHdUMk (11분 43초)
    • 예제【5-6-1】 insert.php 파일 생성
    • 【5-6-2】 MySQL 서버에 접속
  • 6.2mysqli_connect 285
    • 학습목표웹 애플리케이션에서 사용할 주요 MySQL API의 기능과 사용법을 익힌다.
    • 동영상https://youtu.be/OrJ3LIzDHQw (04분 35초)
    • 예제【5-6-3】 MySQL 서버에 접속
    • 【5-6-4】 mysqli_query를 이용해 SQL 문 실행
    • 【5-6-5】 데이터가 추가됐는지 확인
  • 6.3mysqli_connect 289
    • 학습목표웹 애플리케이션에서 사용할 주요 MySQL API의 기능과 사용법을 익힌다.
    • 동영상https://youtu.be/2Jh4mmeJLvI (08분 22초)
    • 예제【5-6-6】 SQL 문을 변수에 담은 다음 API로 전달
    • 【5-6-7】 잘못된 SQL 문 작성 후 테스트
    • 【5-6-8】 잘못된 SQL 문 작성 후 테스트
    • 【5-6-9】 잘못된 SQL 문 작성 후 테스트
  • 7활용 - 글 생성 296
    • 학습목표MySQL API를 활용해 글을 생성하는 기능을 구현한다.
    • 동영상https://youtu.be/uIemIQzSO0U (16분 19초)
    • 예제【5-7-1】 index.php에 글 쓰기 기능으로 이동하는 링크 추가
    • 【5-7-2】 index.php를 복사해 create.php 파일 생성
    • 【5-7-3】 process_create.php 파일 생성
    • 【5-7-4】 값을 전달받아 SQL 문 작성
    • 【5-7-5】 데이터베이스에 접속하는 코드 추가
    • 【5-7-6】 쿼리를 실행하는 코드 추가
    • 【5-7-7】 테이블에 있는 데이터 삭제 및 확인
    • 【5-7-8】 테이블에 있는 데이터가 추가됐는지 확인
    • 【5-7-9】 데이터가 잘 들어가지 않으면 메시지를 출력
    • 【5-7-10】 데이터가 잘 들어가지 않으면 문제를 기록
    • 【5-7-11】 데이터가 잘 들어갔으면 성공했다고 출력
  • 8.1SELECT 사용법 1 307
    • 학습목표SQL 문 중 하나인 SELECT를 활용해 데이터베이스에 저장된 글을 조회하는 방법을 알아본다.
    • 동영상https://youtu.be/wt2ZOfigrC4 (08분 09초)
    • 예제【5-8-1】 select.php 파일 생성 후 데이터베이스 접속을 수행
    • 【5-8-2】 데이터를 가져오는 SELECT 문 작성
    • 【5-8-3】 데이터베이스 서버에 쿼리 전송
    • 【5-8-4】 var_dump()로 $result 확인
    • 【5-8-5】 var_dump()로 결과 개수($result->num_rows) 확인
  • 8.2SELECT 사용법 2 312
    • 학습목표SQL 문 중 하나인 SELECT를 활용해 데이터베이스에 저장된 글을 조회하는 방법을 알아본다.
    • 동영상https://youtu.be/zvDrg6J9uv8 (06분 59초)
    • 예제【5-8-6】 mysqli_fetch_array()의 결과 확인
    • 【5-8-7】 $row에 mysqli_fetch_array() 결과 담기
    • 【5-8-8】 특정 행을 가져와 출력하기
  • 8.3SELECT 사용법 3 316
    • 학습목표SQL 문 중 하나인 SELECT를 활용해 데이터베이스에 저장된 글을 조회하는 방법을 알아본다.
    • 동영상https://youtu.be/AQGpcSc52Vw (10분 54초)
    • 예제【5-8-9】 mysqli_fetch_array()를 두 번 반복해서 실행
    • 【5-8-10】 mysqli_fetch_array()를 데이터가 없을 때까지 반복해서 실행
    • 【5-8-11】 mysqli_fetch_array()에 데이터가 없을 때 $row 변수 확인
    • 【5-8-12】 데이터를 반복문으로 가져오기
  • 9.1활용 - 글 읽기 1 323
    • 학습목표MySQL API와 SELECT 문을 이용해 웹 애플리케이션에 서 글을 읽어오는 기능을 구현한다.
    • 동영상https://youtu.be/Uo1aYyL3qUQ (07분 59초)
    • 예제【5-9-1】 데이터베이스 접속 코드 추가
    • 【5-9-2】 데이터 가져오기
    • 【5-9-3】 데이터베이스 제어 코드와 표현과 관련된 코드를 분리
    • 【5-9-4】 목록에 링크 추가
    • 【5-9-5】 목록에 링크를 동적으로 추가
  • 9.2활용 - 글 읽기 2 328
    • 학습목표MySQL API와 SELECT 문을 이용해 웹 애플리케이션에 서 글을 읽어오는 기능을 구현한다.
    • 동영상https://youtu.be/6u55XwoUYtM (07분 03초)
    • 예제【5-9-6】 id 값에 해당하는 글을 가져오는 SQL 문 추가
    • 【5-9-7】 SQL 문을 서버에 전달하고 변수에 값 담기
    • 【5-9-8】 제목과 본문 영역에 출력
    • 【5-9-9】 WEB 부분에 링크 추가
    • 【5-9-10】 조건문을 이용해 id 값이 있는지 확인
    • 【5-9-11】 $article의 초깃값 설정
    • 【5-9-12】 create.php에도 목록 적용
  • 10.1보안 - 필터링 337
    • 학습목표안전한 웹 애플리케이션을 만들기 위해 MySQL에 대한 공격 기법과 원리를 이해하고, 이를 방지하는 대책을 마련한다.
    • 동영상https://youtu.be/GdRZhWjTDnE (08분 05초)
    • 예제【5-10-1】 SQL 주입 공격 막기 : id 값 필터링
    • 【5-10-2】 SQL 주입 공격 막기 : id 값 필터링
    • 【5-10-3】 SQL 주입 공격 막기
  • 10.2보안 – SQL 주입 공격의 원리 341
    • 학습목표안전한 웹 애플리케이션을 만들기 위해 MySQL에 대한 공격 기법과 원리를 이해하고, 이를 방지하는 대책을 마련한다.
    • 동영상https://youtu.be/Xgb4LhqX4PU (12분 16초)
    • 예제【5-10-4】 mysqli_query()를 mysqli_multi_query()로 변경
    • 【5-10-5】 프로그램의 실행을 멈추는 die() 추가
    • 【5-10-6】 보안을 위해 추가한 mysqli_real_escape_string() 제거
    • 【5-10-7】 die() 함수 제거
    • 【5-10-8】 mysqli_real_escape_string() 적용
  • 10.3보안 – 이스케이핑 350
    • 학습목표안전한 웹 애플리케이션을 만들기 위해 MySQL에 대한 공격 기법과 원리를 이해하고, 이를 방지하는 대책을 마련한다.
    • 동영상https://youtu.be/wlZ8PE8yddE (08분 44초)
    • 예제【5-10-9】 XXS.php 파일 생성
    • 【5-10-10】 <, >를 이용해 꺾쇠 표현하기
    • 【5-10-11】 htmlspecialchars() 함수로 특수 기호를 그대로 출력하기
    • 【5-10-12】 오염된 데이터가 노출되지 않게 이스케이핑
  • 11.1활용 – 글 쓰기 1 357
    • 학습목표MySQL API와 UPDATE 문을 이용해 웹 애플리케이션에 서 글을 수정하는 기능을 구현한다.
    • 동영상https://youtu.be/GtE4ZXm8eNo (08분 30초)
    • 예제【5-11-1】 index.php에 글 수정으로 이동하는 링크 추가
    • 【5-11-2】 특정 글을 지정하도록 파라미터 전달
    • 【5-11-3】 id가 있는지 없는지 확인 후 링크 만들기
    • 【5-11-4】 필터링, 이스케이핑 코드 적용
    • 【5-11-5】 create.php를 복제해서 update.php 파일 생성
    • 【5-11-6】 create.php에서 불필요한 코드 제거
    • 【5-11-7】 글 수정일 때 <input> 태그의 value 설정
  • 11.2활용 – 글 쓰기 2 368
    • 학습목표MySQL API와 UPDATE 문을 이용해 웹 애플리케이션에 서 글을 수정하는 기능을 구현한다.
    • 동영상https://youtu.be/kaFDC5mby_Q (04분 43초)
    • 예제【5-11-8】 id 값을 가지고 업데이트를 처리하는 process_update로 이동하도록 변경
    • 【5-11-9】 process_create.php를 복제해서 process_update.php 파일 생성
    • 【5-11-10】 SQL 문을 update 문으로 변경
    • 【5-11-11】 id 값을 필터링
  • 12활용 – 글 삭제 373
    • 학습목표MySQL API와 DELETE 문을 이용해 웹 애플리케이션에 서 글을 삭제하는 기능을 구현한다.
    • 동영상https://youtu.be/t6TtDnulbMU (08분 09초)
    • 예제【5-12-1】 삭제 링크 추가
    • 【5-12-2】 클릭하면 바로 삭제되도록 링크 변경
    • 【5-12-3】 안전하게
      을 이용해 post 방식으로 값을 전달하도록 수정
    • 【5-12-4】 process_update.php를 복제해 process_delete.php 파일 생성
    • 【5-12-5】 delete 문으로 수정
  • 13관계형 데이터베이스의 도입 379
    • 학습목표관계형 데이터베이스의 개념과 예제에 관계형 데이터베이 스를 도입하는 법을 배운다.
    • 동영상https://youtu.be/0DKV9pyXB-g (10분 57초)
  • 14많아지는 테이블 387
    • 학습목표데이터베이스 테이블의 구조를 확인하고 변경하는 법을 배운다.
    • 동영상https://youtu.be/ZHI2q4BUp7s (07분 52초)
    • 예제【5-14-1】 topic 테이블의 데이터 조회
    • 【5-14-2】 author 테이블 생성
    • 【5-14-3】 author 테이블의 구조 확인
    • 【5-14-4】 author 테이블에 데이터 추가
    • 【5-14-5】 topic 테이블에 author 컬럼 추가
    • 【5-14-6】 topic 테이블 구조 확인
    • 【5-14-7】 기존 데이터에 author_id 값 설정
    • 【5-14-8】 topic 테이블의 데이터 조회
    • 【5-14-9】 topic 테이블과 author 테이블 조인
  • 15테이블 간의 연결 – 읽기 393
    • 학습목표여러 테이블을 연결(조인)해서 데이터를 읽는 방법을 배운다.
    • 동영상https://youtu.be/Mdsemy535bE (05분 16초)
    • 예제【5-15-1】 목록에 author 테이블의 name 출력
    • 【5-15-2】 에러를 출력해서 확인하기
    • 【5-15-3】 목록에 author 테이블의 name 출력(SQL 문 수정)
    • 【5-15-4】 $article 배열에 name 추가
    • 【5-15-5】 화면에 name 출력
    • 【5-15-6】 $author의 초깃값 설정
  • 16테이블 간의 연결 – 생성 401
    • 학습목표글을 추가할 때 여러 테이블을 연결해서 데이터를 생성하 는 방법을 배운다.
    • 동영상https://youtu.be/qkkHEkI8Wpw (08분 17초)
    • 예제【5-16-1】 저자 정보를 가져오는 SQL 문 추가
    • 【5-16-2】 저자를 선택할 수 있는 셀렉트 박스 출력
    • 【5-16-3】 <select>에 name 값 추가
    • 【5-16-4】 SQL 문을 출력한 후 프로그램 종료
    • 【5-16-5】 author_id 값이 전송됐는지 확인
    • 【5-16-6】 저자 id를 저장하도록 SQL 문 수정
    • 【5-16-7】 die($sql) 제거
  • 17새로운 테이블 – 읽기 409
    • 학습목표관계형 데이터베이스에서 식별자를 통해 여러 테이블을 연결해서 데이터를 읽어오는 방법을 배운다.
    • 동영상https://youtu.be/eLFszaGuI1o (10분 01초)
    • 예제【5-17-1】 저자 목록으로 이동할 수 있는 링크 추가
    • 【5-17-2】 author.php 파일 생성
    • 【5-17-3】 author 테이블을 표로 표현(첫 행)
    • 【5-17-4】 author 테이블을 표로 표현(데이터 행)
  • 18새로운 테이블 – 생성 415
    • 학습목표웹 애플리케이션에서 새로 생성한 테이블에 데이터를 생 성하는 방법을 배운다.
    • 동영상https://youtu.be/LHVppMSMLfY (06분 18초)
    • 예제【5-18-1】 저자를 추가하기 위한 폼 추가
    • 【5-18-2】 process_create.php를 복제해서 process_create_author.php 파일 생성
    • 【5-18-3】 글 작성에 성공하면 author.php 페이지로 보내기
  • 19새로운 테이블 – 수정 421
    • 학습목표웹 애플리케이션에서 새로 생성한 테이블의 데이터를 수 정하는 방법을 배운다.
    • 동영상https://youtu.be/B9fidsr4Io8 (12분 05초)
    • 예제【5-19-1】 표에 업데이트 링크 추가
    • 【5-19-2】 update 링크의 href 값 설정
    • 【5-19-3】 id 값에 해당하는 저자의 정보 가져오기
    • 【5-19-4】 수정 페이지일 때 id 값에 해당하는 정보 출력하기
    • 【5-19-5】 수정 페이지일 때 버튼의 레이블과 값 변경
    • 【5-19-6】 수정 페이지일 때 폼의 action 값 변경
    • 【5-19-7】 process_update.php 파일을 복제해서 process_update_author.php 파일 생성
    • 【5-19-8】 수정 페이지일 때 id가 전송될 수 있게 $form_id 변수 설정
    • 【5-19-9】 SQL 문 수정
    • 【5-19-10】 die() 코드 제거, 수정 후 기존 페이지로 이동하도록 설정
  • 20새로운 테이블 – 삭제 433
    • 학습목표웹 애플리케이션에서 새로 생성한 테이블에 저장된 데이 터를 삭제하는 방법을 배운다.
    • 동영상https://youtu.be/XVbwTDfqn-A (08분 16초)
    • 예제【5-20-1】 표에 삭제 폼 추가
    • 【5-20-2】 process_delete.php 파일을 복제해 process_delete_author.php 파일 생성
    • 【5-20-3】 자바스크립트를 이용해 onsubmit 속성 지정
    • 【5-20-4】 onsubmit 속성에 confirm() 설정
    • 【5-20-5】 사용자가 쓴 글을 삭제하는 SQL 추가
  • 21수업을 마치며 442
    • 학습목표수업 내용을 정리하고 앞으로 배울 만한 내용을 살펴본다.
    • 동영상https://youtu.be/GJwaHD6j124 (05분 57초)