Daten aus *.dbs datei mit PHP auslesen, SQLite format 3
Jan K.
- datenbank
Hallo zusammen,
ich möchte gerne aus einer *.dbs Datei Informationen mit PHP auslesen. Öffne ich die Datei mit meinem Editor, Notepad 2, steht in der ersten Zeile "SQLite format 3" und danach ein Haufen mir unbekannter Zeichen wie "NUL", "EOT" oder "SOH".
Nach ein wenig googeln hat mir diese Seite - [url]http://php-sqlite3.sourceforge.net/pmwiki/pmwiki.php[/url] - gesagt das PHP bereits Funktionen dafür an Bord hat.
Daraufhin habe ich im PHP Manual - [url]http://de.php.net/manual/de/function.sqlite-open.php[/url] - die Funktion sqlite_open() gefunden und ausprobiert.
Leider bekomme ich nach meinem ersten plumpen Versuch folgenden Fehler serviert: Warning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database in \htdocs\labor\sql_lite.php on line 2
file is encrypted or is not a database.
Kann mir jemand weiterhelfen wie ich die Datei mit PHP auslesene kann?
Gute Nacht,
Jan
Drei Sachen, die Du testen kannst:
1. versuche, die Datei mit sqlite3 zu öffnen
2. versuche, mit PHP eine sqlite3-db zu erstellen und vergleiche das Format
3. prüfe, ob die sqlite-Versionen der db und des PHP-Moduls sich voneinander unterscheiden.
Gruß, LX
Nachdem ich nun ein paar Stunden weitergesucht habe, scheint jemand schonmal mein Problem gehabt zu haben und hat es mit folgendem Code gelöst, der auch genauso im PHP manual zu finden ist:
<?php
// load the SQLite3 database. Replace path as needed. Retain the 'sqlite:' prefix.
function dbSQLiteConnection() {
if($dbHandle = new PDO('sqlite:xyz.dbs')) {
return $dbHandle;
} else {
die("db error");
}
}
if( isset($_GET["admins"])) {
print("<table width=30% align=center border=1px>");
print("<tr><td align=center><b>Nickname</b></td></tr>");
$DB = dbSQLiteConnection();
$Q = $DB->query("SELECT name FROM admins");
if( $Q === false) {
die("no admins added");
}
foreach( $Q as $row) {
print("<tr><td align=center>$row[0]</td></tr>");
}
print("</table>");
exit;
}
?>
Ich habe meine php.ini wie hier beschrieben - http://de.php.net/manual/de/pdo.installation.php - angepasst und erhalte einen Fehler vondem ich nicht weiß wie ich ihn lösen soll.
Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in C:\xampp\htdocs\labor\sql_lite.php:6 Stack trace: #0 C:\xampp\htdocs\labor\sql_lite.php(6): PDO->__construct('sqlite:ghost.db...') #1 C:\xampp\htdocs\labor\sql_lite.php(17): dbSQLiteConnection() #2 {main} thrown in C:\xampp\htdocs\labor\sql_lite.php on line 6
Kann mir irgendjemand helfen?
Gruß,
Jan
Mahlzeit Jan K.,
if($dbHandle = new PDO('sqlite:xyz.dbs')) {
Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in C:\xampp\htdocs\labor\sql_lite.php:6 Stack trace: #0 C:\xampp\htdocs\labor\sql_lite.php(6): PDO->__construct('sqlite:ghost.db...') #1 C:\xampp\htdocs\labor\sql_lite.php(17): dbSQLiteConnection() #2 {main} thrown in C:\xampp\htdocs\labor\sql_lite.php on line 6
Vielleicht solltest Du sicherstellen, dass bei Deiner PHP-Installation PDO enthalten/aktiviert ist?
MfG,
EKKi
PDO
PDO support enabled
PDO drivers mssql, mysql, sqlite2
Phpinfo() sagt mir das PDO unterstützt wird. Stutzig macht mich aber schon eine Weile das bei den PDO Treibern kein "sqlite" aufgeführt ist, obwohl ich einiges an PDO Treibern in der PHP.ini, der PHP PDO Installationsanleitung folgend, vorgesehen habe:
extension=php_pdo.dll
extension=php_pdo_firebird.dll
extension=php_pdo_informix.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
extension=php_pdo_oci8.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
Könnte das Problem sein das der sqlite Treiber (sowie ofensichtlich einige andere) nicht geladen wurden? Phpinfo() scheint diese These jedenfalls zu untermauern.
Ich bin absolut kein Apachecrack, für Hilfe wäre ich äusserst dankbar. Ich benutze einen Apache Webserver aus dem XAMPP Installationspaket und habe diesen auch schon neugestartet um zu sehen ob phpinfo() die neuen Einstellungen aus der PHP.ini übernimmt, ohne Erfolg.
Mit kommt es so vor als ob die PHP.ini ignoriert werden würde.
Gruß,
Jan
Ok, die Vermutung hat sich bewahrheitet. Im beknackten XAMPP Ordner gab es drei PHP.ini`s, habe nun die richtige abgeändert.
Danke für eure Hilfe,
Jan
echo $begrüßung;
Im beknackten XAMPP Ordner gab es drei PHP.ini`s, habe nun die richtige abgeändert.
Die phpinfo()-Ausgabe zeigt im oberen Teil an, welche Konfigurationsdatei(en) wirksam sind.
echo "$verabschiedung $name";