본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/php

mysqli 의 사용법

by 미노드 2018. 10. 6.

// 기본값을 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();