如何使用 PDO 连接到 SQLite 数据库?

问题描述 投票:0回答:3

我有一个 SQLite 数据库,并尝试使用 PHP 连接到它。 但是,我收到此错误:

警告:

sqlite_open()
[function.sqlite-open]:文件已加密或不是第 4 行
C:\xampp\htdocs\deepthi\combadd\combadd_db.php
中的数据库

连接数据库失败!

出了什么问题,如何解决?

php sqlite
3个回答
36
投票

尝试使用 PDO 而不是 sqlite_open:

$dir = 'sqlite:/[YOUR-PATH]/combadd.sqlite';
$dbh  = new PDO($dir);
$query =  "SELECT * FROM combo_calcs WHERE options='easy'";
foreach ($dbh->query($query) as $row)
{
    echo $row[0];
}
$dbh = null; //This is how you close a PDO connection

10
投票

连接到数据库 以下 PHP 代码展示了如何连接到现有数据库。如果数据库不存在,则会创建数据库,最后返回一个数据库对象。

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('combadd.sqlite');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }
?>

现在让我们运行上面的程序在当前目录中创建数据库test.db。您可以根据您的要求更改路径。如果数据库创建成功,则会给出以下消息:

Open database successfully

选择操作

以下 PHP 程序展示了我们如何获取和显示记录

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('combadd.sqlite');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      SELECT * FROM combo_calcs WHERE options='easy';
EOF;

   $ret = $db->query($sql);
   while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
      echo "ID = ". $row['ID'] . "\n";
   }
   echo "Operation done successfully\n";
   $db->close();
?>

3
投票
<?php

    if ($db = sqlite_open('sampleDB', 0666, $sqliteerror) ) { 
        $result = sqlite_query($db, 'select bar from foo');
        var_dump(sqlite_fetch_array($result) ); 
    } else {
        die($sqliteerror);
    }

?>

确保启用了 sqlite 支持,检查 phpinfo()

解决您问题的另一种方法是: 使用 sqlite3 模块代替

class DB extends SQLite3
{
        function __construct( $file )
        {
            $this->open( $file );
        }
}

$db = new DB( 'sampleDB.sqlite' );
© www.soinside.com 2019 - 2024. All rights reserved.