Autor | Zpráva | ||
---|---|---|---|
lqs Profil * |
#1 · Zasláno: 17. 4. 2012, 18:30:36
Ahoj, snazim se pomoci PHP tahat data z SQlite3 databaze.
Kdyz pouziju: <?php $jmenoDB = sqlite_open("tz.sqlite"); $dotaz = sqlite_query($jmenoDB, 'SELECT location FROM tz'); while ($dataDB = sqlite_fetch_array($dotaz, SQLITE_ASSOC)) { echo $dataDB['location']. '<br />'; } ?> <?php try { $db = new PDO('sqlite:tz.sqlite'); //open the database echo 'Connected to database<br />'; $dotaz = $db->query("SELECT location, string FROM tz"); foreach ($dotaz as $row) { print $row['location'] . $row['string'] . '<br />'; } $db = NULL; // close the database connection } catch(PDOException $e) { print 'Exception : '.$e->getMessage(); } ?> Connected to database Warning: Invalid argument supplied for foreach() in /data/web/test/index2.php on line 7 A jeste jeden dotaz. Nekde na webu jsem cetl, ze na SQlite3 se musi pouzit PDO. Mne to ale jde i bez nej. Jak to teda je? |
||
DnD Profil |
napadá mě, že $dotaz je prázdný, pak to zahlásí invalid argument.
Tak bych hledal chybu ve vytvoření PDO objektu (proč se vždy vypisuje connected, nechtělo by to nějak ověřit?) anebo v prázdné tabulce. |
||
Tori Profil |
#3 · Zasláno: 17. 4. 2012, 23:43:16
Co se vypíše, když za ř.6 přidáte
var_dump($db->errorinfo()); ?
|
||
lqs Profil * |
#4 · Zasláno: 18. 4. 2012, 00:58:29
2:
Mam tam echo 'Connected to database<br />'; 3: ... $dotaz = $db->query("SELECT location, string FROM timezone"); var_dump($db->errorinfo()); foreach ($dotaz as $row) ... Connected to database array(3) { [0]=> string(5) "HY000" [1]=> int(26) [2]=> string(38) "file is encrypted or is not a database" } Warning: Invalid argument supplied for foreach() in /data/web/virtuals/5925/virtual/www/subdom/martin/test/index2.php on line 8 V obou pripadech pouzivam stejny DB soubor se stejnymi daty. Kdyz pouziju sqlite_open vystup je takovyto: Africa/Abidjan<br />Africa/Accra<br />Africa/Addis Ababa<br />Africa/Algiers<br />Africa/Asmara<br />Africa/Bamako<br />Africa/Bangui<br />Africa/Banjul<br />Africa/Bissau<br />Africa/Blantyre<br />Africa/Brazzaville<br />..... |
||
Mike8748 Profil |
#5 · Zasláno: 18. 4. 2012, 08:39:11
lqs:
napadá mě náhodou ta databáze není uložená ve formátu SQLite 2? je možné že máš v php PDO podporu pouze pro verzi 3, proto to nejde |
||
lqs Profil * |
#6 · Zasláno: 19. 4. 2012, 00:16:41
DB je 100% sqlite3
|
||
Ugo Profil |
lqs:
no já bych si tak 100% jist nebyl, sqlite_open() a funkce tohoto rozšíření pracují s sqlite2, pro sqlite3 je třída sqlite3. - ověřit samozřejmě můžeš zobrazenim databáze v textovym formátu, na začátku souboru bude určení typu |
||
Časová prodleva: 7 dní
|
|||
lqs Profil * |
#8 · Zasláno: 26. 4. 2012, 23:52:03
Tak jsem to overoval DB je 100% v sqlite3 formatu a phpinfo ma take podporu:
$ head timezone.sqlite | hexdump -C 00000000 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 |SQLite format 3.| ... <?php $jmenoDB = sqlite_open("timezone.sqlite"); $dotaz = sqlite_query($jmenoDB, 'SELECT location FROM tz'); while ($dataDB = sqlite_fetch_array($dotaz, SQLITE_ASSOC)) { echo $dataDB['location']. '<br />'; } ?> Fatal error: Call to undefined function sqlite_open() in /data/web/test/index.php on line 3 |
||
Mike8748 Profil |
#9 · Zasláno: 27. 4. 2012, 07:41:24
funkce sqlite_open je pro SQLite verzi 2, a potřebuje nainstalované rozšířeni SQLite (na windows soubor php_sqlite.dll)
tvůj fatal error znamená že to rozšíření na localhostu povolené nemáš (pouze SQLite 3), na wedosu to nainstalované je. |
||
Časová prodleva: 12 let
|
0