1

我正在尝试使用 PHP 连接到 SQLite。我通过将 CSV 文件导入三个表的表来创建数据库。但是,我无法使用以下代码进行连接:

$dbhandle = sqlite_open('db/pokedex.db', 0666, $error);
if(!$dbhandle) die ($error);

这将返回以下错误:

Warning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database in /pokedex/configpokedexdb-sqlite.php on line 12 file is encrypted or is not a database

谷歌搜索告诉我我可能有版本不匹配。尽管在我的 phpinfo() 中发现了一些 SQLite3 提及,但我认为这可能仍然是一个问题,因此我尝试了以下建议的代码:

try
{
    //connect to SQLite database

    $dbhandle = new PDO("sqlite:db/pokedex.db"); //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");
}

之后我收到以下错误:

Warning: sqlite_exec() expects parameter 1 to be resource, object given in /home/rawdco81/public_html/pokedex/index-sqlite.php on line 53

在此之前,我尝试运行new PDO("sqlite:VPN0.sqlite");站点提供的内容,但这显然是错误的,因为它根本没有指向我的 .db 文件。您将在函数调用旁边的注释中看到这段代码。

我很难连接到数据库......这样做的正确方法是什么?

另外,我正在运行 PHP 版本 5.2.13。

已编辑:我在错误的位置粘贴了错误的错误消息。

4

1 回答 1

1

现在我仔细观察..,我认为您在第二个代码段中连接成功!不过,您不应该同时sqlite_exec使用PDO;这是 SQLite 的两个不同的 PHP 接口。

第一段代码被炸的原因是遗留库不支持 PDO v3。sqlite_exec一旦您尝试针对PDO我认为的对象运行,第二段代码就会被轰炸。

我敢打赌,如果你var_dump($dbhandle);在 try/catch 之后加上 a,你会看到你有一个初始化的 PDO 对象。

只需阅读有关使用 PDO 运行查询的内容,您就应该很成功了!

于 2012-10-31T03:48:27.763 回答