SQLite是PHP轻量级无服务器数据库的理想选择,支持PDO和SQLite3两种连接方式,需配置扩展、处理文件路径权限、使用预处理防注入,并通过事务确保操作原子性。

如果您在PHP项目中需要轻量级、无服务器的数据库解决方案,SQLite是一个理想选择。以下是PHP连接并操作SQLite数据库的具体方法:
一、使用PDO扩展连接SQLite
PDO(PHP Data Objects)提供统一的数据访问接口,支持多种数据库驱动,连接SQLite时无需额外配置服务端,仅需确保pdo_sqlite扩展已启用。
1、确认php.ini中已启用extension=pdo_sqlite(Windows下为php_pdo_sqlite.dll,Linux/macOS下通常默认编译进PHP)。
2、创建PHP文件,使用new PDO()实例化连接对象,DSN格式为sqlite:/绝对路径/数据库文件.db。
立即学习“PHP免费学习笔记(深入)”;
3、设置错误模式为异常,便于捕获SQL执行错误:$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)。
4、执行CREATE TABLE语句初始化表结构,例如:$pdo->exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")。
二、使用SQLite3类原生连接
PHP内置SQLite3类,不依赖PDO,直接调用底层C库,适合简单场景且对扩展依赖要求更低。
1、检查phpinfo()输出中是否存在SQLite3支持项,确认extension=sqlite3已加载。
2、实例化SQLite3对象,传入数据库文件路径,如$newdb = new SQLite3('/var/www/data/app.db')。
3、调用exec()方法执行建表或插入语句,例如:$newdb->exec("INSERT INTO users (name) VALUES ('Alice')")。
4、查询数据时使用query()返回SQLite3Result对象,再通过fetchArray()逐行读取结果。
三、处理数据库文件路径与权限
SQLite数据库以单个文件形式存在,PHP进程必须对文件及其所在目录具备读写权限,否则连接或写入将失败。
PHP5学习对象教程由美国人古曼兹、贝肯、瑞桑斯编著,简张桂翻译,电子工业出版社于2007年12月1日出版的关于PHP5应用程序的技术类图书。该书全面介绍了PHP 5中的新功能、编程方法及设计模式,还分析阐述了PHP 5中新的数据库连接处理、错误处理和XML处理等机制,帮助读者系统了解、熟练掌握和高效应用PHP。
1、使用realpath()或__DIR__拼接数据库路径,避免相对路径导致的open失败,例如:$dbPath = __DIR__ . '/data/myapp.db'。
2、确保Web服务器用户(如www-data、apache或nginx)对目标目录具有rwx权限,可执行chmod 755 data/与chown www-data:data/。
3、首次运行时若数据库文件不存在,SQLite会自动创建;但父目录必须存在且可写,否则抛出Unable to open database file错误。
四、执行查询与参数绑定防注入
直接拼接SQL字符串易引发SQL注入,应优先使用预处理语句绑定参数,保障数据安全。
1、PDO方式:使用prepare()创建语句,再用bindValue()绑定变量,例如$stmt = $pdo->prepare("SELECT * FROM users WHERE name = ?"); $stmt->bindValue(1, $inputName); $stmt->execute()。
2、SQLite3方式:调用prepare()返回SQLite3Stmt对象,再用bindValue()指定类型与值,如$stmt->bindValue(':name', $inputName, SQLITE3_TEXT)。
3、查询结果获取后,使用fetchArray(SQLITE3_ASSOC)返回关联数组,便于键名访问字段。
五、事务控制与错误调试
批量写入或多表操作需事务保证原子性,同时启用详细错误报告有助于快速定位连接或语法问题。
1、PDO中调用beginTransaction()开启事务,成功后commit(),失败则rollback()。
2、SQLite3中调用exec("BEGIN")启动事务,exec("COMMIT")或exec("ROLLBACK")结束。
3、启用错误显示:ini_set('display_errors', '1'); error_reporting(E_ALL); 并检查SQLite返回码,常见错误码14对应unable to open database file。










