好学IT学院:IT信息技术分享交流平台
标签:PHP  来源:互联网  作者:本站整理  发布时间:2008-10-21  ★★★加入收藏〗〖手机版
SQLite in PHP
摘要:(1)SQLite介绍SQLite第一个Alpha版本诞生于2000年5月. 至今已经有4个年头了. 而在今年的5月SQLite也迎来了一个新的里程: SQLite 3.下面是你访问SQLite官方网站: www.sqlite.org 时第……

(5) PHP的环境下使用SQLite

1. PHP下的安装

在PHP5中, SQLite已作为默认支持的模块.在PHP4中你需要进行安装. 首先去http://pecl.php.net/package/SQLite 去下载到SQLite的扩展, 注意Windows下的版本需要去http://snaps.php.net/win32/PECL_STABLE/php_sqlite.dll 下载, 当然你也可以下载代码自己编译.事实上在linux下只需要使用命令: ‘pear install sqlite’就可以完成安装,而在Win下需要修改php.ini, 同样的使PHP4支持SQLite.

此时你已经无需再安装任何东西了, 而你也已经完全支持SQLite了, 一个简单, 快速, 可靠的数据库.

如果你需要一个管理软件, 那么你可以尝试使用SQLiteManager (www.sqlitemanager.org), 一个与PHPMyAdmin类似的针对SQLite的数据库管理系统.

2. 第一个使用SQLite的PHP程序.

我们创建一个叫binzy的数据库, 并创建一个叫Binzy的Table, 有2个字段, 分别是ID, Title. 而其中ID为INTEGER PRIMARY KEY, 即自增三主键. 并在其中插入了2条数据”Binzy”, “Jasmin”.

打开并显示数据:

if ($db = sqlite_open('../binzy.db', 0666, $sqliteerror))
 {  // 打开
SQLite$result = sqlite_query($db,'select * from Binzy'); // 查询
while($row = sqlite_fetch_array($result)) // 获得结果
{
print 'ID=>'.$row['MyID'].', Name=>'.$row['Name'].''; }
} else {die ($sqliteerror);}

接下来Insert一条记录, 其中我们会使用到SQLite的事务.

if ($db = sqlite_open('../binzy.db', 0666, $sqliteerror)) {
  sqlite_query($db,'BEGIN TRANSACTION'); // 开始事务
  if (@sqlite_query($db,'insert into Binzy (Name) values (\'Binzy&Jasmin\')'))
  {
        print 'Execute Successfully';
        sqlite_query($db,'COMMIT TRANSACTION'); // 提交事务
  }
  else
  {
        print sqlite_error_string(sqlite_last_error($db));
        sqlite_query($db,'ROLLBACK TRANSACTION'); // 回滚事务
  }
} else {
  die ($sqliteerror);
}

是的, 如果你已经熟悉使用PHP对MySQL之类的数据库进行操作, 那么SQLite几乎是一样的, 而且更为简洁.

3. 使用Pear::DB (PHP4中)

上面的例子中我们是使用PHP的函数直接对SQLite进行访问, 这样的访问方式是不推荐使用的. 更好的方式是使用某种数据访问抽象层, 如Pear的DB. 下面是2中查询例子的重写. 使用某个数据访问抽象层会更方便更安全, 并且可以在需要进行数据库迁移的时候尽可能减小成本.

require_once('DB.php');
$dbh = DB::connect('sqlite://@localhost/../binzy.db?mode=0666'); // 打开
$dbh->setFetchMode(DB_FETCHMODE_ASSOC);
if (!DB::isError($dbh))
{
  $result = $dbh->query('select * from Binzy'); // 查询
if (!DB::isError($result))
{
while($row = $result->fetchRow()) // 读取
{
print 'ID=>'.$row['MyID'].', Name=>'.$row['Name'].'';
}
$dbh->disconnect();
}
else
{
print($dbh->message);
$dbh->disconnect();
}
}
else
{
print($dbh->message);
$dbh->disconnect();
}

4. 使用Creole (PHP5中)

Creole是由phpdb.org开发的面向PHP5的数据访问抽象层. 关于Creole可参考本期中的《Creole :新兴数据抽象层》.

Pear::DB并没有针对PHP5进行改变, 只是因为PHP5对PHP4良好的兼容性, 使得Pear::DB在PHP5下仍能很好的工作. 所以在你使用PHP5的时候推荐使用Creole. require_once('creole/Creole.php');

$Connection = null;
try{
  $Connection = Creole::getConnection('sqlite://@localhost/../binzy.db?mode=0644'); // 获得Connection
  $rs = $Connection->executeQuery('select * from Binzy'); // Get ResultSet    
 while($rs->next())
  {
      print 'ID=>'.$rs->getInt('myid').', Name=>'.$rs->getString('name').'';
  }
  $Connection->close();
} catch(SQLException $exception) // Catch Exception
{
  $Connection->close();
  print $exception->getMessage();
}

(6) 总结

随着PHP5的即将到来, 给我们带来了许多新的语言特性, 使PHP更加适合于构建强大健壮的各类系统. 而随着PHP5一起走进PHP开发人员视线的SQLite则给我们带来了有别于MySQL的惊喜. 是的, 他简单却又强大, 稳定. 而在刚刚过去的六月底新版本的SQLite3已经Release了第一个测试版本, 不仅仅带来了新的文件结构, 也带来了许多新的特性.

利用SVN log命令查看提交日志信息详解
  内容提示:本文将详细介绍通过SVN log命令查看提交日志信息的方法。log: 显示一组版本与/或文件的提交日志信息。用法: 1、…
  • 好学考试H5触屏版开放内测
  • 好学触屏公众号虎力全开、杨帆起航!