PHP+sqlite3

2017-01-13 10:52:45来源:作者:冬虫草人点击

本篇文章讲述php怎么与sqlite数据库协作。


PHP版本: 5.6.23
sqlite版本: 3.16.2

同mysql一样,早期php操作这些数据库都是分别调用各自的驱动。现在加入了PDO这个中间层。可以看看我这篇笔记PDO用法记录.下面讲的代码可能并不规范,但是能够工作,我的目的也在于此。


sqlite3操作

废话不多说,sqlite可以看做是小型数据库,去官网选择相应版本解压到某个目录下,并把该目录放到环境变量path中。


用vscode打开项目目录,Ctrl+`打开终端,输入sqlite3.


出现上图即表示安装成功。


貌似sqlite3命令行不能自动完成,要添加的话得自己编译源码。see this


关于sqlite的命令行操作直接去官网看吧。


不过有个快速的写数据库的办法就是直接建sql文件,然后用以下命令将sql文件转成sqlite3数据库文件。经测试完全可用。如果不能使用,请注意你的sql语法是否有误。


这是我写的sql文件,与sqlite3生成的不一样,为了预防出现问题,请使用简单点的sql语句。


CREATE TABLE meals (dish text, price number, meal text);
INSERT INTO "meals" VALUES('eggs',12,'lunch');

这个命令将 .sql 转成sqlite3支持的.db


cat test.sql | sqlite3 test.db
php.ini配置

首先确保php.ini里的所有涉及sqlite的扩展打开。


然后把路径添加进去,别忘了重启。


测试

test sqlite3:



<?php
// Use the SQLite database 'dinner.db'
$db = new PDO('sqlite:dinner.db');
// Define what the allowable meals are
$meals = array('breakfast','lunch','dinner');
// Check if submitted form parameter "meal" is one of
// "breakfast", "lunch", or "dinner"
// fixme: Undefined index: meals
if (in_array($_POST['meal'], $meals)) {
// If so, get all of the dishes for the specified meal
$stmt = $db->prepare('SELECT dish,price FROM meals WHERE meal LIKE ?');
$stmt->execute(array($_POST['meal']));
$rows = $stmt->fetchAll();
// If no dishes were found in the database, say so
if (count($rows) == 0) {
print "No dishes available.";
} else {
// Print out each dish and its price as a row
// in an HTML table
print '';
foreach ($rows as $row) {
print "";
}
print "
DishPrice
$row[0]$row[1]
";
}
} else {
// This message prints if the submitted parameter "meal" isn't
// "breakfast", "lunch", or "dinner"
print "Unknown meal.";
}
?>
测试结果




内容来源:https://segmentfault.com/a/1190000008076550

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台