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
_にあるデータベースではありません
データベースへの接続に失敗しました!
何が問題なのですか、どうすれば修正できますか?
Sqlite_openの代わりにPDOを使用してみてください。
$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
データベースへの接続次の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
SELECT操作
次の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();
?>
<?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()を確認します
問題のもう1つの解決策は、代わりにsqlite3モジュールを使用することです。
class DB extends SQLite3
{
function __construct( $file )
{
$this->open( $file );
}
}
$db = new DB( 'sampleDB.sqlite' );