错误:文件已加密或不是数据库

2022-08-30 13:54:08

我使用PHP创建了一个带有表的数据库。我通过以下方式做到了这一点:

<?php
$db = new SQLiteDatabase("test.db");
unset($db);
$db = sqlite_open("test.db");
sqlite_query($db,"create table students (names char(255))");
sqlite_close($db);
?>

从命令行执行PHP文件后:“php test.php”,我在目录中得到一个名为“test.db”的新文件(这就是我想要的)。Than,在命令行中,我键入“sqlite3 test.db”。通过这种方式,我进入了sqlite命令行会话。然后,使用sqlite3,我键入“.tables”(我想检查新数据库是否包含它应该包含的表)。结果我得到:

Error: file is encrypted or is not a database 

因此,它不起作用。有人知道这个问题吗?提前感谢您的任何帮助。


答案 1

这是一个版本不匹配问题。

要使用 PHP5 和 SQLite 打开数据库,我们需要使用 PDO 而不是函数。如何打开或创建数据库的示例:sqlite_open()

try 
{
    /*** connect to SQLite database ***/

    $dbh = new PDO("sqlite:VPN0.sqlite");
    echo "Handle has been created ...... <br><br>";

}
catch(PDOException $e)
{
    echo $e->getMessage();
    echo "<br><br>Database -- NOT -- loaded successfully .. ";
    die( "<br><br>Query Closed !!! $error");
}

echo "Database loaded successfully ....";

答案 2

我遇到了同样的问题,使用pdo而不是sqlite_open()

这个链接是非常有帮助的,这是我的代码片段,工作完美,希望它有帮助

$dir = 'sqlite:YourPath/DBName.db';
$dbh  = new PDO($dir) or die("cannot open the database");
$query =  "SELECT * from dummy_table";
foreach ($dbh->query($query) as $row)
{
    echo $row[0];
}

推荐