최초 작성일 : 2021-09-25 | 수정일 : 2021-09-25 | 조회수 : 377 |
// 기본값을 1로 설정하고, SQL 인젝션과 관련 보안 문제를 피하기 위해서 integer 로 형변환 한다.
1 2 3 4 5 | if (isset($_GET['aid']) && is_numeric($_GET['aid'])) { $aid = (int) $_GET['aid']; } else { $aid = 1; } |
// MySQL 데이터베이스에 연결하고 sakila라는 이름의 데이터베이스를 선택한다.
1 2 | // Hostname: 127.0.0.1, username: your_user, password: your_pass, db: sakila $mysqli = new mysqli('127.0.0.1', 'your_user', 'your_pass', 'sakila'); |
// 연결 시도가 실패한다면 이메일 발송 또는 에러 기록 또는 에러 메시지 등을 표시할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 | if ($mysqli->connect_errno) { // 실제 사이트는 에러 메시지를 보여주지 않지만 예로 한번 해보자. echo "죄송합니다, 이 웹사이트에 문제가 발생했습니다."; echo "Error: MySQL 접속이 실패했습니다. 에러정보는 다음과 같습니다.: \n"; echo "Errno: " . $mysqli->connect_errno . "\n"; echo "Error: " . $mysqli->connect_error . "\n"; exit; } |
// SQL 쿼리 실행
1 2 3 4 5 6 7 | $sql = "SELECT actor_id, first_name, last_name FROM actor WHERE actor_id = $aid"; if (!$result = $mysqli->query($sql)) { // 쿼리가 실패한다면. echo "죄송합니다. 문제가 발생했습니다."; |
// 일반 사이트에서는 하지 않지만 다시 한번 에러 정보 받는 법을 보여준다.
1 2 3 4 5 6 7 8 9 10 11 | echo "Error: 쿼리 실행이 실패했습니다. 이유는 다음과 같습니다. \n"; echo "Query: " . $sql . "\n"; echo "Errno: " . $mysqli->errno . "\n"; echo "Error: " . $mysqli->error . "\n"; exit; } |
// MySQL 연결과 쿼리가 성공했다. 결과는 어디에?
1 2 3 4 5 6 7 8 9 | if ($result->num_rows === 0) { // 때로는 결과가 잘 나오지만 때로는 잘 안나온다. echo "일치하는 것이 없네요. 다시 시도해주세요."; exit; } |
// 이 예제에서는 한 개의 결과가 나오고 결과를 연관 배열로 가져온다. 연관 배열의 key는 테이블의 컬럼 이름이다.
1 2 3 | $actor = $result->fetch_assoc(); echo "Sometimes I see " . $actor['first_name'] . " " . $actor['last_name'] . " on TV."; |
// 이제 무작위로 5개의 데이터를 뽑아보자. 그리고 에러 처리도 해보자.
1 2 3 4 5 6 7 8 9 | $sql = "SELECT actor_id, first_name, last_name FROM actor ORDER BY rand() LIMIT 5"; if (!$result = $mysqli->query($sql)) { echo "죄송합니다. 문제가 발생했습니다."; exit; } |
// 5개의 무작위 배우들을 리스트에 출력하고 각 배우에 링크하자.
1 2 3 4 5 6 7 8 9 | echo "\n"; while ($actor = $result->fetch_assoc()) { echo "\n"; echo $actor['first_name'] . ' ' . $actor['last_name']; echo "\n"; } echo "\n"; |
// 종료하기 전에 결과에 대한 메모리를 돌려 주고 MySQL을 닫자.
1 2 3 | $result->free(); $mysqli->close(); |