1

PHP を使用して SQLite に接続しようとしています。3 つのテーブルのテーブルに 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

よく見ると、2番目のコードセグメントで正常に接続されていると思います。sqlite_execただし、タンデムで使用するべきではありませんPDO。これらはSQLiteへの2つの異なるPHPインターフェースです。

コードの最初のビットが爆撃された理由は、レガシーライブラリがPDOv3をサポートしていないためです。私が推測するオブジェクトsqlite_execに対して実行しようとすると、コードの2番目のビットが爆撃されます。PDO

try / catchの後に置くvar_dump($dbhandle);と、初期化されたPDOオブジェクトがあることがわかります。

PDOを使用してクエリを実行する方法を読んでください。

于 2012-10-31T03:48:27.763 に答える