如何使用php使用xampp的sqlite数据库

时间:2011-08-05 05:28:20

标签: php sqlite

如何使用xampp服务器安装sqlite或sqlite 3数据库以及如何使用php脚本或程序使用sqlite或sqlite 3数据库......

4 个答案:

答案 0 :(得分:5)

创建sqlite数据库

您有两种可能实现这一目标:

  1. 在.sql文件中编写DDL语句(CREATE TABLE ...)并使用sqlite命令行执行它(假设您的CREATE TABLE语句位于名为tabledef.sql的文件中):

    cat tabledef.sql | sqlite3 yourdbname.db
    
  2. 使用PHP在连接的数据库上执行DDL语句(请参阅“执行语句”)。
  3. 连接到sqlite数据库

    你绝对应该使用PDO来做到这一点:

    $dbh = new PDO('sqlite:/path/to/your/database.db', '', '', array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    ));
    

    如果数据库不存在,则创建它。但是您需要对包含数据库的目录进行写访问。如果您只允许对数据库文件进行写访问,则sqlite会失败,因为它还需要在同一目录中创建一个锁文件。

    执行陈述

    现在您已经建立了连接,您可以使用数据库完成任务,例如执行一些DDL语句:

    $dbh->exec("CREATE TABLE IF NOT EXISTS mytable (
        mypk INTEGER PRIMARY KEY AUTOINCREMENT,
        myvalue TEXT);");
    

    或者如果您需要动态生成SQL语句,请使用预准备语句:

    $statement = $dbh->prepare("INSERT INTO mytable (myvalue) VALUES(?)");
    
    $statement->execute(array("hello"));
    $statement->execute(array("world"));
    

    这只是一个小概述,有关详细信息,请查看PDO manualsqlite Documentation

答案 1 :(得分:3)

好好看看它是否已安装,检查phpinfo()并查看sqlite的驱动程序是否已安装(搜索列表中的“sqlite”),它将分别提及sqlite和sqlite 3。我认为他们都预先安装了XAMPP,所以它应该可行。然后查看sqlite functions的PHP手册,或使用PDO包装器。谷歌是你的朋友。

答案 2 :(得分:2)

在Xampp(v3.2.2)中激活SQLite3。打开xampp/php/php.ini,取消注释行;extension=sqlite3(检索;),保存php.ini并重新启动Xampp服务器。

答案 3 :(得分:1)

您可以使用数据库包装器,这可以使事情变得更容易。

尝试这个,我做到了:

<?php
Class Sqlite3_Wrapper
{

    private $sFileName, $oCon=null, $iDebug, $oResult;
    private $sDefaultFile = 'default.db';

    public function __construct($sFileName, $iDebug=false)
    {
         $this->setFileName($sFileName);
    }

    private function showMessage($sMsg)
    {
         if($this->iDebug != false)
         {
              $sMessage = (php_sapi_name() == 'cli')?$sMsg."\n":$sMsg.'<br />' ;
              echo $sMessage;
         }
    }

    public function setFileName($sFileName)
    {
         if(is_string($sFileName) && strlen($sFileName)>0)
         {
              $this->sFileName = $sFileName;
         }
         else
         {
              $this->sFileName = $this->sDefaultFile;
         }
    }

    public function openDB($sFileName=false)
    {
         if($sFileName!==false)
         {
              $this->setFileName($sFileName);
         }
         try
         {
              $this->oCon = new SQLite3($this->sFileName);
         }catch(Exception $oEx)
         {
              $this->showMessage($ex->getMessage());
         }

    }

    public function closeDB()
    {
         if($this->oCon!=null)
         {
              $this->oCon->close();
              $this->oCon = null;
         }
    }

    public function executeCUDQuery($sQuery)
    {
         if($this->oCon==null)
         {
              $this->showMessage('Not connected to database');
         }
         else
         {
              try
              {
                   $this->oCon->exec($sQuery);
              }catch(Exception $ex)
              {
                   $this->showMessage($ex->getMessage());
              }
         }
    }

    public function executeQuery($sQuery)
    {
         $this->oResult = null;
         if($this->oCon==null)
         {
              $this->showMessage('Not connected to database');
         }
         else{
              try
              {
                   $this->oResult = $this->oCon->query($sQuery);
              }catch(Exception $oEx)
              {
                   $this->showMessage($oEx->getMessage());
              }
         }
         return $this->oResult;
     }

     public function fetch($iMode=SQLITE3_NUM)
     {
     $aData = array();
     try
     {
         $aData = $this->oResult->fetchArray($iMode);
     }
     catch(Exception $oEx)
     {
         $this->showMessage($oEx->getMessage());
     }
     return $aData;
  }
 }
?>

或获取文件:

http://vaan3713.github.com/databaseswrappers/

希望它会有所帮助。