【问题标题】:How do I connect to an SQLite database with PHP? [duplicate]如何使用 PHP 连接到 SQLite 数据库? [复制]
【发布时间】:2015-06-24 16:22:58
【问题描述】:

我有一个 SQLite 数据库,正在尝试使用 PHP 连接到它。这是我正在使用的:

<?php
    $dbconn = sqlite_open('combadd.sqlite');

    if ($dbconn) {
        $result = sqlite_query($dbconn,  "SELECT * FROM combo_calcs WHERE options='easy'");
        var_dump(sqlite_fetch_array($result, SQLITE_ASSOC));
    } else {
        print "Connection to database failed!\n";
    }
?>

但是,我收到此错误:

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

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

【问题讨论】:

  • 嗨@user,欢迎来到SO。我强烈建议您使用 PDO - 它比您(或我)自己(我们自己)想出的任何东西都非常简单、灵活且更安全。 net.tutsplus.com/tutorials/php/…

标签: php sqlite


【解决方案1】:

尝试使用 PDO 代替 sqlite_open:

$dir = 'sqlite:/[YOUR-PATH]/combadd.sqlite';
$dbh  = new PDO($dir) or die("cannot open the database");
$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

【讨论】:

【解决方案2】:

连接到数据库 以下 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' );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-27
      • 1970-01-01
      • 2018-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多