pdo链接和sqlite新手教程(一)

感觉很多人不会pdo和sqlite,在这方面我虽然不是高手,但教教菜鸟我还是有信心的,我尽量用简单的例子来讲……
@查无此人,你就是以前的唐伯虎吧?
pdo是什么?就是用来操作数据库的一些函数,作为新手,你不需要全面的了解,他有几个函数很重要
分别是
$db=new PDO(链接参数);//这个其实就是实例化,用来链接sqlite和mysql数据库,它会返回一个链接的句柄,这个句柄也就是$db,他是一个链接标识,利用它可以进行更多的操作!至于参数有sqlite和mysql两种,当然还有其它的,不过现在的好多空间貌似就支持这两种数据库……
w3上有链接mysql的例子,我主要讲解一下链接sqlite的例子(例子在下面,用心看,手打,辛苦死了)
$db->exec($sql);这个就是用来执行sql语句的,这个函数一般用来执行没有返回值的sql语句,exec()返回受修改或删除 SQL语句影响的行数。如果没有受影响的行,则返回 0。
比如执行创建表,写入,删除,更新这些sql语句就可以用它,
$db->query($sql);这个也是用来执行sql语句的,但是它是有返回值的,如果要查询数据库,就要用它了,就像这样,会返回一个查询的数组……
$result=$db->query($sql)->fetch(PDO::FETCH_ASSOC);
需要注意的是
$db->query($sql)->fetch

$db->query($sql)->fetchAll
都能查询数据库的数据,但是
fetch只能查询单一的数组,只能查询单列的数据,
写个例子:
$result=$db->query("SELECT * FROM user")->fetch();//查询数据表user的所有数据
print_r($result);//把这个查询的数组显示出来
如果这样查询数据库,无论你的表里的数据再多,你永远都都只能得到一个数组,因为它只返回一个数组,如果要返回全部的数组,可以用
$result=$db->query("SELECT * FROM user")->fetchAll();
这样就会返回一个多维数组了……
fetch和fetchAll都有参数,一般常用的就是三个参数,
PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组
PDO::FETCH_BOTH(默认):返回一个索引为结果集列名和以0开始的列号的数组,这个是,当fetch()没有参数时,使用的就是它
PDO::FETCH_NUM:返回一个索引为以0开始的结果集列号的数组
PDO::lastInsertId()
返回一个最后插入数据库那一行的行的ID,例如
$db->lastInsertId();
这几个就是经常用的函数
有些人肯定要问,如果我要查询数据表的记录有多少行,怎么办?
可以这样做
$result=$this->db->query($sql)->fetch();
$num=count($result);//看结果数组有多少行,当然还有其它的方法,比如用sql语句查询,我也就不一一的说了

sqlite是真正的文本数据库,用文件保存数组根本就算不上数据库,mysql和sqlite的语句差不多,sqlite数据库其实就是一个文件,利用pdo你可以很简单的创建一个sqlite数据库,
例如
<?php
$db=new PDO('sqlite:love.db3');//通过pdo方式链接sqlite数据库,如果数据库文件不存在就会自动创建一个love.db3的文件,当然你也可以设置路径,
$db=new PDO('sqlite:./db/love.db3');这样也是可以的,关键就是你要有个db的目录……
?>

你如果执行这段代码就会建立一个love.db3的文件,不信就试一试……
如何设置数据库编码呢?
用pdo就是这样的
$db->exec('SET NAMES uft8');
设置成uft8的编码,可以改成其它编码,也就不介绍了!
sqlite数据库都有写入安全机制,但是用它会造成写入数据变慢,可以将他关闭,关闭后,数据库会在断电时损坏,一般来说,只要经常备份数据库文件,问题不大,关闭之后,更新和写入的速度比之前要快几倍,听说最快要高达50倍……例子如下:
$db->exec('PRAGMA synchronous='OFF');

创建数据库后,进行编码和相关设置后,下面我们开始创建数据库表……
写到这里其实创建表就是sql语句了,会sqlite的,用pdo::exec()就可以执行了,留着下节讲,困意袭来,不想打字了……
@自在鬼
@铁哥
@旧人
@尽心
@回忆
不懂没关系,早晚会懂的,就跟我一年前,也不懂,后来就会了……
献上本人自写的sqlite操作类,灰常简单,要用的拿去,其实pdo还有很多函数没介绍,学无止境,pdo乃大势所趋……
<?php
class sqlite {
private $db;
static $SQLITE_DB='lovefc.db3';//规定数据库文件路径
static $SQLITE_SY='OFF';//是否打开关闭安全写入机制,默认开启,设置成"OFF"则为关闭,
function __construct(){
$this->db=new PDO ('sqlite:'.self::$SQLITE_DB);
$this->db->exec('SET NAMES uft8');
$this->db->exec('PRAGMA synchronous='.self::$SQLITE_SY);
}

public function get($sql) {
return $this->db->exec($sql);
}

public function getone($sql)
{
$result=$this->db->query($sql)->fetch();
if(count($result)>0){
return $result[0];
}
return false;
}

public function lastid(){
return $this->db->lastInsertId();
}

public function getrow($sql,$type){
$result=$this->db->query($sql)->fetch($type);
if($result!==false){
return $result;
}
return false;
}

public function getall($sql,$type){
$result=$this->db->query($sql)->fetchAll($type);
if($result!==false)
{
return $result;
}
return false;
}
}

夜深了,睡觉了……
回复列表(39|隐藏机器人聊天)
添加新回复
回复需要登录