SQLite 与 PHP:初学者指南

你好啊,未来的编程巨星!欢迎你加入我们激动人心的SQLite和PHP之旅。我很高兴能作为你的向导,一起探索这个迷人的主题。如果你是编程新手,不用担心——我们会一步步来,很快你就能像专业人士一样处理数据库了!

SQLite - PHP

安装

在我们深入SQLite和PHP的精彩世界之前,我们需要确保我们拥有所有必要的工具。这就像为烹饪冒险做准备——你需要准备好你的食材和厨具!

首先,让我们检查一下你的计算机上是否安装了PHP。打开你的命令提示符或终端,并输入:

php -v

如果你看到了版本信息,太好了!你已经准备好了。如果没有,别担心——前往PHP的官方网站(php.net)并按照他们的安装指南操作。

接下来,我们需要在PHP中启用SQLite。通常情况下,它是默认启用的,但让我们确认一下。打开你的php.ini文件(你可以通过运行php --ini来查找它的位置)并查找这行:

extension=sqlite3

如果它被注释掉了(开头有一个分号),去掉分号来启用它。

恭喜你!你刚刚完成了我们旅程的第一步。现在,让我们进入激动人心的部分——实际使用PHP操作SQLite!

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语句包装你的数据库操作,以优雅地处理任何错误。以下是一个更健壮的版本:

<?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>伟大的盖茨比</title>
<author>F. 斯科特·菲茨杰拉德</author>
<year>1925</year>

$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();
}
?>

这可能看起来很复杂,但实际上相当简单:

  • 我们使用预编译语句(:title:author:year)来防止SQL注入攻击。
  • 我们准备我们的查询,然后绑定值到每个占位符。
  • 最后,我们执行这个语句。

选择操作

现在,让我们从数据库中检索我们的书籍:

<?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()返回一个关联数组。

更新操作

哎呀!我们犯了一个错误。"伟大的盖茨比"实际上是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', '伟大的盖茨比', SQLITE3_TEXT);

if ($stmt->execute()) {
echo "书籍更新成功!";
} else {
echo "更新书籍错误:" . $db->lastErrorMsg();
}
?>

这和我们的INSERT操作很相似,但我们使用的是UPDATE SQL命令。

删除操作

最后,让我们学习如何从我们的数据库中移除一本书:

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

$query = "DELETE FROM books WHERE title = :title";

$stmt = $db->prepare($query);
$stmt->bindValue(':title', '伟大的盖茨比', SQLITE3_TEXT);

if ($stmt->execute()) {
echo "书籍删除成功!";
} else {
echo "删除书籍错误:" . $db->lastErrorMsg();
}
?>

就这样!我们已经涵盖了在PHP中使用SQLite的所有基本操作。记住,熟能生巧。尝试创建你自己的数据库项目,也许是一个待办事项列表或者食谱书。你越多地摆弄这些概念,就会越熟练。

我希望你喜欢这次旅程,就像我一样。继续编码,继续学习,最重要的是,玩得开心!下次见,快乐数据库!

Credits: Image by storyset