SQLite - PHP: Hướng dẫn cho người mới bắt đầu

Xin chào bạn, ngôi sao lập trình tương lai! Chào mừng bạn đến với hành trình đầy thú vị vào thế giới SQLite và PHP. Tôi rất vui mừng được làm hướng dẫn viên của bạn trong chuyến phiêu lưu này. Đừng lo lắng nếu bạn là người mới bắt đầu lập trình - chúng ta sẽ cùng nhau học từng bước, và trước khi bạn nhận ra, bạn sẽ xử lý cơ sở dữ liệu như một chuyên gia!

SQLite - PHP

Cài đặt

Trước khi chúng ta lặn sâu vào thế giới thú vị của SQLite và PHP, chúng ta cần đảm bảo rằng chúng ta đã có tất cả các công cụ cần thiết. Điều này giống như chuẩn bị cho một cuộc phiêu lưu nấu ăn - bạn cần sẵn sàng nguyên liệu và dụng cụ!

Đầu tiên, hãy kiểm tra xem PHP đã được cài đặt trên máy tính của bạn chưa. Mở command prompt hoặc terminal và gõ:

php -v

Nếu bạn thấy thông tin về phiên bản, tuyệt vời! Bạn đã sẵn sàng. Nếu không, đừng lo lắng - hãy truy cập trang web chính thức của PHP (php.net) và làm theo hướng dẫn cài đặt của họ.

Tiếp theo, chúng ta cần启用 SQLite trong PHP. Thường thì nó được启用 mặc định, nhưng hãy kiểm tra một lần nữa. Mở tệp php.ini của bạn (bạn có thể tìm thấy vị trí của nó bằng cách chạy php --ini) và tìm dòng này:

extension=sqlite3

Nếu nó bị 注释 ( có dấu chấm phẩy ở đầu), hãy xóa dấu chấm phẩy để启用 nó.

Chúc mừng! Bạn đã hoàn thành bước đầu tiên của hành trình của chúng ta. Bây giờ, hãy chuyển sang phần thú vị - thực sự sử dụng SQLite với PHP!

API Giao diện PHP

PHP cung cấp một bộ các hàm để tương tác với các cơ sở dữ liệu SQLite. Hãy tưởng tượng chúng như một bộ công cụ - mỗi hàm là một công cụ khác nhau giúp bạn làm việc với cơ sở dữ liệu của mình. Dưới đây là một số hàm quan trọng nhất:

Hàm Mô tả
sqlite3::open() Mở một cơ sở dữ liệu SQLite
sqlite3::exec() Thực thi một truy vấn SQL
sqlite3::query() Thực thi một truy vấn SQL và trả về một bộ kết quả
sqlite3::close() Đóng kết nối cơ sở dữ liệu

Đừng lo lắng nếu những điều này có vẻ rối rắm bây giờ - chúng ta sẽ xem cách sử dụng từng hàm khi chúng ta tiếp tục!

Kết nối đến cơ sở dữ liệu

Bây giờ chúng ta đã có bộ công cụ sẵn sàng, hãy bắt đầu bằng cách kết nối đến một cơ sở dữ liệu. Điều này giống như mở cửa vào phòng lưu trữ dữ liệu của bạn. Dưới đây là cách chúng ta làm:

<?php
$db = new SQLite3('myDatabase.db');
?>

Dòng đơn giản này thực hiện rất nhiều việc! Hãy phân tích nó:

  • Chúng ta đang tạo một đối tượng SQLite3 mới và lưu trữ nó trong biến $db.
  • 'myDatabase.db' là tên của tệp cơ sở dữ liệu của chúng ta. Nếu nó không tồn tại, SQLite sẽ tạo nó cho chúng ta.

Nhớ luôn bao bọc các thao tác cơ sở dữ liệu trong các khối try-catch để xử lý lỗi một cách êm xuôi. Dưới đây là một phiên bản robust hơn:

<?php
try {
$db = new SQLite3('myDatabase.db');
echo "Kết nối đến cơ sở dữ liệu thành công!";
} catch (Exception $e) {
echo "Không thể kết nối đến cơ sở dữ liệu: " . $e->getMessage();
}
?>

Tạo bảng

Bây giờ chúng ta đã kết nối, hãy tạo một bảng để lưu trữ dữ liệu. Hãy tưởng tượng bạn đang quản lý một thư viện nhỏ và bạn muốn theo dõi sách của mình. Dưới đây là cách bạn có thể tạo bảng '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 "Bảng được tạo thành công!";
} else {
echo "Lỗi tạo bảng: " . $db->lastErrorMsg();
}
?>

Hãy phân tích này:

  • Chúng ta sử dụng CREATE TABLE IF NOT EXISTS để tránh lỗi nếu bảng đã tồn tại.
  • Chúng ta xác định bốn cột: id, title, author, và published_year.
  • id là khóa chính và sẽ tự động tăng.
  • Chúng ta sử dụng $db->exec() để thực thi truy vấn SQL của mình.

Thao tác INSERT

Tuyệt vời! Chúng ta đã có một bảng. Bây giờ, hãy thêm một số sách vào thư viện của chúng ta:

<?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 "Sách được thêm thành công!";
} else {
echo "Lỗi thêm sách: " . $db->lastErrorMsg();
}
?>

Điều này có thể trông phức tạp, nhưng thực sự rất đơn giản:

  • Chúng ta sử dụng các truy vấn đã chuẩn bị (:title, :author, :year) để ngăn chặn các cuộc tấn công SQL injection.
  • Chúng ta prepare truy vấn của mình, sau đó bindValue cho mỗi placeholder.
  • Cuối cùng, chúng ta execute câu lệnh.

Thao tác SELECT

Bây giờ, hãy lấy sách của chúng ta từ cơ sở dữ liệu:

<?php
$db = new SQLite3('library.db');

$query = "SELECT * FROM books";
$result = $db->query($query);

while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
echo "Tiêu đề: " . $row['title'] . "<br>";
echo "Tác giả: " . $row['author'] . "<br>";
echo "Xuất bản: " . $row['published_year'] . "<br><br>";
}
?>

Đây là những gì đang xảy ra:

  • Chúng ta sử dụng $db->query() để thực thi truy vấn SELECT của mình.
  • Chúng ta sử dụng một vòng lặp while với fetchArray() để lấy mỗi hàng.
  • SQLITE3_ASSOC告诉 fetchArray() để trả về một mảng liên kết.

Thao tác UPDATE

Ồ! Chúng ta đã phạm một sai lầm. "The Great Gatsby" thực sự được xuất bản vào năm 1925, không phải 1924. Hãy cập nhật cơ sở dữ liệu của chúng ta:

<?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 "Sách được cập nhật thành công!";
} else {
echo "Lỗi cập nhật sách: " . $db->lastErrorMsg();
}
?>

Điều này tương tự như thao tác INSERT của chúng ta, nhưng chúng ta sử dụng lệnh UPDATE SQL thay thế.

Thao tác DELETE

Cuối cùng, hãy học cách xóa một sách khỏi cơ sở dữ liệu của chúng ta:

<?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 "Sách được xóa thành công!";
} else {
echo "Lỗi xóa sách: " . $db->lastErrorMsg();
}
?>

Và thế là xong! Chúng ta đã bao gồm tất cả các thao tác cơ bản khi làm việc với SQLite trong PHP. Nhớ rằng, thực hành là cách tốt nhất để trở nên thành thạo. Thử tạo các dự án cơ sở dữ liệu của riêng bạn, có thể là một danh sách công việc hoặc một sổ tay công thức. Càng chơi với các khái niệm này, bạn sẽ càng trở nên thoải mái hơn.

Tôi hy vọng bạn đã thích hành trình này như tôi. Hãy tiếp tục lập trình, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ! Đến gặp lại lần sau, chúc may mắn với cơ sở dữ liệu của bạn!

Credits: Image by storyset