SQLite - PHP: 초보자 가이드
안녕하세요, 미래의 코딩 슈퍼스타! SQLite와 PHP의 세상으로의 흥미로운 여정에 오신 것을 환영합니다. 이 fascineting 주제를 함께 탐구하며 여러분의 가이드로서 기쁩니다. 프로그래밍에 처음이시라면 걱정 마세요 - 우리는 단계별로 진행하며, 깜빡할 줄 알고 프로처럼 데이터베이스를 다룰 수 있게 될 것입니다!
설치
SQLite와 PHP의 흥미로운 세상에 뛰어들기 전에, 필요한 모든 도구를 확인해야 합니다. 요리 여정을 준비하는 것과 같아요 - 재료와 도구를 준비해 두어야 해요!
먼저, 컴퓨터에 PHP가 설치되어 있는지 확인해 보겠습니다. 명령 프롬프트나 터미널을 엽니다:
php -v
버전 정보가 보이면 대성공입니다! 모든 준비가 끝났습니다. 그렇지 않다면 걱정 마세요 - 공식 PHP 웹사이트(php.net)로 이동하여 설치 가이드를 따라해 보세요.
다음으로, PHP에서 SQLite를 활성화해야 합니다. 일반적으로 기본적으로 활성화되어 있지만, 확인해 보겠습니다. php.ini
파일을 엽니다 (php --ini
를 실행하여 위치를 찾을 수 있습니다) 그리고 다음 줄을 찾아보세요:
extension=sqlite3
이 줄이 주석 처리되어 있다면 (시작에 세미콜론이 있다면), 세미콜론을 제거하여 활성화합니다.
축하합니다! 우리 여정의 첫 번째 단계를 완료했습니다. 이제 흥미로운 부분으로 이동해 보겠습니다 - SQLite를 PHP와 함께 사용하는 것!
PHP 인터페이스 API
PHP는 SQLite 데이터베이스와 상호작용할 수 있는 함수 집합을 제공합니다. 이들을 도구 상자라고 생각해 보세요 - 각 함수는 데이터베이스를 다루는 데 도움이 되는 다른 도구입니다. 가장 중요한 몇 가지를 소개합니다:
함수 | 설명 |
---|---|
sqlite3::open() | SQLite 데이터베이스 열기 |
sqlite3::exec() | SQL 쿼리 실행 |
sqlite3::query() | SQL 쿼리 실행하고 결과 셋 반환 |
sqlite3::close() | 데이터베이스 연결 닫기 |
이제는 혼란스러울 수 있지만 - 우리는 이제 각각의 사용법을 보게 될 것입니다!
데이터베이스 연결
이제 도구 상자가 준비되었으니, 데이터베이스에 연결해 보겠습니다. 데이터 저장실의 문을 여는 것과 같아요. 다음과 같이 합니다:
<?php
$db = new SQLite3('myDatabase.db');
?>
이 간단한 줄은 많은 일을 합니다:
- 우리는 새로운
SQLite3
객체를 만들어$db
변수에 저장합니다. - 'myDatabase.db'는 데이터베이스 파일의 이름입니다. 파일이 존재하지 않으면 SQLite가 자동으로 생성해 줍니다.
데이터베이스 연산을 항상 try-catch 블록으로 감싸 error를 부드럽게 처리하는 것이 좋습니다. 더 robust한 버전은 다음과 같습니다:
<?php
try {
$db = new SQLite3('myDatabase.db');
echo "데이터베이스에 성공적으로 연결했습니다!";
} catch (Exception $e) {
echo "데이터베이스에 연결할 수 없습니다: " . $e->getMessage();
}
?>
테이블 생성
이제 연결이 완료되었으니, 데이터를 저장할 테이블을 생성해 보겠습니다. 작은 도서관을 운영하고 있으며, 책을 추적하고 싶다고 가정해 봅시다. 다음과 같이 'books' 테이블을 생성합니다:
<?php
$db = new SQLite3('library.db');
$query = "CREATE TABLE IF NOT EXISTS books (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
author TEXT NOT NULL,
published_year INTEGER
)";
if ($db->exec($query)) {
echo "테이블이 성공적으로 생성되었습니다!";
} else {
echo "테이블 생성 중 오류: " . $db->lastErrorMsg();
}
?>
이를 분해해 보겠습니다:
- 우리는
CREATE TABLE IF NOT EXISTS
를 사용하여 테이블이 이미 존재하는 경우 오류를 피합니다. - 네 개의 열을 정의합니다: id, title, author, published_year.
-
id
는 주요 키이며 자동으로 증가합니다. - 우리는
$db->exec()
를 사용하여 SQL 쿼리를 실행합니다.
삽입 연산
테이블이 생성되었습니다. 이제 도서관에 책을 추가해 보겠습니다:
<?php
$db = new SQLite3('library.db');
<title> = "The Great Gatsby";
$author = "F. Scott Fitzgerald";
$year = 1925;
$query = "INSERT INTO books (title, author, published_year)
VALUES (:title, :author, :year)";
$stmt = $db->prepare($query);
$stmt->bindValue(':title', $title, SQLITE3_TEXT);
$stmt->bindValue(':author', $author, SQLITE3_TEXT);
$stmt->bindValue(':year', $year, SQLITE3_INTEGER);
if ($stmt->execute()) {
echo "책이 성공적으로 추가되었습니다!";
} else {
echo "책 추가 중 오류: " . $db->lastErrorMsg();
}
?>
이것은 복잡해 보일 수 있지만, 사실은 매우 간단합니다:
- 우리는 prepared statements (
:title
,:author
,:year
)를 사용하여 SQL 주입 공격을 방지합니다. - 우리는 쿼리를
prepare
하고 각 placeholder에bindValue
합니다. - 마지막으로, 우리는 문장을
execute
합니다.
선택 연산
이제 데이터베이스에서 책을 검색해 보겠습니다:
<?php
$db = new SQLite3('library.db');
$query = "SELECT * FROM books";
$result = $db->query($query);
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
echo "제목: " . $row['title'] . "<br>";
echo "저자: " . $row['author'] . "<br>";
echo "출간 연도: " . $row['published_year'] . "<br><br>";
}
?>
이러한 일이 일어납니다:
- 우리는
$db->query()
를 사용하여 SELECT 쿼리를 실행합니다. - 우리는 while 루프와
fetchArray()
를 사용하여 각 행을 검색합니다. -
SQLITE3_ASSOC
는fetchArray()
에 반환되는 associative array를 의미합니다.
갱신 연산
아이고! 우리는 실수했습니다. "The Great Gatsby"는 1925년에 출간되었지 1924년이 아닙니다. 데이터베이스를 갱신해 보겠습니다:
<?php
$db = new SQLite3('library.db');
$query = "UPDATE books SET published_year = :year WHERE title = :title";
$stmt = $db->prepare($query);
$stmt->bindValue(':year', 1925, SQLITE3_INTEGER);
$stmt->bindValue(':title', 'The Great Gatsby', SQLITE3_TEXT);
if ($stmt->execute()) {
echo "책이 성공적으로 갱신되었습니다!";
} else {
echo "책 갱신 중 오류: " . $db->lastErrorMsg();
}
?>
이것은 삽입 연산과 매우 유사하지만, SQL 명령어가 UPDATE로 바뀌었습니다.
삭제 연산
마지막으로, 데이터베이스에서 책을 제거하는 방법을 배워보겠습니다:
<?php
$db = new SQLite3('library.db');
$query = "DELETE FROM books WHERE title = :title";
$stmt = $db->prepare($query);
$stmt->bindValue(':title', 'The Great Gatsby', SQLITE3_TEXT);
if ($stmt->execute()) {
echo "책이 성공적으로 제거되었습니다!";
} else {
echo "책 제거 중 오류: " . $db->lastErrorMsg();
}
?>
이제 SQLite와 PHP를 사용하여 수행할 수 있는 모든 기본 연산을 다룰 수 있습니다. 연습이 완벽합니다. 자신만의 데이터베이스 프로젝트를 만들어 보세요, 예를 들어 할 일 목록이나 레시피 책을 만들어 보세요. 이 개념들을 더 많이 사용할수록 더 편안해질 것입니다.
이 여정을 함께 즐겼기를 바랍니다. 계속 코딩하고, 학습하고, 가장 중요한 것은 즐겁게 만들어 보세요! 다음에 다시 만날 때까지, 행복한 데이터베이스 작업을 기원합니다!
Credits: Image by storyset