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