PHP를 활용해 학생 이름을 입력하면 해당 학생의 점수를 출력하는 페이지를 만들어 보겠습니다
데이터베이스를 생성하는 명령은 CREATE DATABASE 입니다
학생의 데이터들을 담을 공간이니 student
라는 이름의 데이터베이스를 만들어 볼게요
CREATE DATABASE student DEFAULT CHARACTER SET UTF8;
한글도 해석할 수 있도록 UTF8 기반의 데이터베이스를 생성했습니다
이제 이 새로 만든 student
데이터베이스를 사용할 수 있도록, 계정에 권한을 부여해야 합니다
GRANT ALL PRIVILEGES ON student.* TO 'admin'@'localhost';
student.*
은 student라는 데이터베이스의 모든 테이블을 의미합니다
저는 admin이라는 계정에 student 데이터베이스의 모든 테이블에 대한 권한을 부여했습니다
그럼 student
데이터베이스에 학생들의 성적을 저장할 student_score
라는 테이블을 만들어 보겠습니다
테이블을 생성하는 명령은 CREATE TABLE 입니다
만들기 전 어떤 정보를 저장할 지 정해야겠네요
저는 이름과 성적을 문자열 형태로 저장하는 테이블을 만들도록 하겠습니다
그리고 각 데이터가 고유하게 구분될 수 있도록 id
라는 고유 번호를 부여하겠습니다
CREATE TABLE student_score (
id INT(20) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20),
score VARCHAR(20)
);
이제 테이블까지 완성되었으니, 이 테이블에 데이터를 입력해 보겠습니다
테이블에 데이터를 입력하는 명령은 INSERT INTO 입니다
저는 이름이 doldol, 성적은 80인 데이터를 입력해 보겠습니다
INSERT INTO student_score VALUES (NULL, ‘doldol’, ‘80’);
id는 자동으로 입력되도록 NULL로 설정하였습니다
이제 데이터베이스는 모두 준비되었습니다
그럼 이름을 검색하면 결과를 보여줄 페이지를 만들어 보겠습니다
GET 방식으로 이름을 입력받아 데이터베이스에서 해당 학생의 점수를 가져오는 페이지입니다
만약 없는 학생이라면 해당 학생은 존재하지 않는다는 문구까지 출력하겠습니다
<html>
<body>
<?php
# 상수로 DB 주소, 아이디, 비밀번호, DB 이름 선언
define('DB_SERVER','localhost');
define('DB_USERNAME','[계정 아이디]');
define('DB_PASSWORD','[계정 비밀번호]');
define('DB_NAME','student');
#DB 연결
$db_conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
?>
<form action="" method="get">
<input type="text" name="name" placeholder="이름">
<input type="button" value="검색">
</form>
<?php
# 만약 폼이 제출되어 학생의 이름을 입력받았다면 name이라는 변수에 저장
if ($_GET['name']) {
$name = $_GET['name'];
# student_score 테이블에서 name이 입력받은 이름인 데이터를 가져옴
$sql = "SELECT * FROM student_score WHERE name='".$name."'";
# DB 연결 티켓과 sql문을 mysqli_query 함수를 이용해 전송하고 결과를 result 변수에 저장
$result = mysqli_query($db_conn, $sql);
# mysqli_fetch_array = select의 결과를 한 줄씩 가져오는 함수
$row = mysqli_fetch_array($result);
# 결과가 없는 경우
if($row[0]==""){
echo "해당 학생을 찾을 수 없습니다.";
} else {
echo $row['name']."학생의 점수는 ".$row['score']."입니다";
}
}
?>
</body>
</html>
SQL문을 작성할 때는 변수와 따옴표 사용 등에 유의합니다