SQLite - PHP: 초보자 가이드

안녕하세요, 미래의 코딩 슈퍼스타! SQLite와 PHP의 세상으로의 흥미로운 여정에 오신 것을 환영합니다. 이 fascineting 주제를 함께 탐구하며 여러분의 가이드로서 기쁩니다. 프로그래밍에 처음이시라면 걱정 마세요 - 우리는 단계별로 진행하며, 깜빡할 줄 알고 프로처럼 데이터베이스를 다룰 수 있게 될 것입니다!

SQLite - PHP

설치

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_ASSOCfetchArray()에 반환되는 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