/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
SQLite
Fra : YJ


Dato : 27-05-06 18:01

Jeg kan ikke få min Linux kasse til at anvende SQLite.

fra phpinfo:

Configure:
'--without-sqlite'

additional .ini files parsed

/etc/php.d/pdo.ini
/etc/php.d/pdo_sqlite.ini


cat /etc/php.d/pdo_sqlite.ini

; Enable pdo_sqlite extension module
extension=pdo_sqlite.so

Har prøvet at fjerne ; i ovenstående og genstarte httpd uden held.

Har også prøvet med:
dl("/usr/lib/php/modules/pdo_sqlite.so");

Men den giver:

Warning: dl() [function.dl]: Unable to load dynamic library
'/usr/lib/php/modules//usr/lib/php/modules/pdo_sqlite.so' -
/usr/lib/php/modules//usr/lib/php/modules/pdo_sqlite.so: cannot open shared
object file: No such file or directory in /home/misc/htdocs/sqlite/index.php
on line 3


Uanset hvad jeg gør siger den:

Fatal error: Call to undefined function sqlite_open() in
/home/misc/htdocs/sqlite/index.php on line 5

Koden er:
$db = sqlite_open('sqlitedb', 0666, $sqliteerror) or die($sqliteerror);

Hvad mangler jeg at gøre???

/YJ



 
 
YJ (27-05-2006)
Kommentar
Fra : YJ


Dato : 27-05-06 18:04

nå ja, det er php 5.

/YJ



Bent Stigsen (27-05-2006)
Kommentar
Fra : Bent Stigsen


Dato : 27-05-06 20:01

YJ wrote:
> Jeg kan ikke få min Linux kasse til at anvende SQLite.
[snip]
> cat /etc/php.d/pdo_sqlite.ini
>
> ; Enable pdo_sqlite extension module
> extension=pdo_sqlite.so

burde være nok.

[snip]
> Fatal error: Call to undefined function sqlite_open() in
> /home/misc/htdocs/sqlite/index.php on line 5

"sqlite_open" er ikke defineret i pdo interfacet, men hører til den
"gamle" sqlite extension.

> Koden er:
> $db = sqlite_open('sqlitedb', 0666, $sqliteerror) or die($sqliteerror);
>
> Hvad mangler jeg at gøre???

Det kedelige:...
http://php.net/manual/en/ref.pdo.php


/Bent

YJ (27-05-2006)
Kommentar
Fra : YJ


Dato : 27-05-06 20:26

> "sqlite_open" er ikke defineret i pdo interfacet, men hører til den
> "gamle" sqlite extension.

Aha!

Så er vi mere kørende:

$dbh = new PDO('sqlite::sqlitedb');

$dbh->query($db, 'CREATE TABLE foo (bar varchar(10))');
$dbh->query($db, "INSERT INTO foo VALUES ('fnord')");
$result = $dbh->query($db, 'SELECT bar FROM foo');

var_dump($result);


Resultatet er desværre bare bool(false)

Jeg regner med det er fordi den slet ikke får oprettet tabellen (der er fuld
skriverettigheder på filen og mappen) da filen stadig er 0 bytes.

Den fejler dog ikke selvom den pakkes ind i en try-catch.

Hvad er syntaksen for den normale ...or die(mysql_error()) i PDO og sqlite?

Tak for hjælpen!
Det hjalp mig meget videre.

YJ



Bent Stigsen (27-05-2006)
Kommentar
Fra : Bent Stigsen


Dato : 27-05-06 23:54

YJ wrote:
[snip]
> $dbh = new PDO('sqlite::sqlitedb');

kun et ":"

> $dbh->query($db, 'CREATE TABLE foo (bar varchar(10))');

sqlite kender ikke "varchar", men bruger bare "text" uden angivelse af
størrelse.

[snip]
> Den fejler dog ikke selvom den pakkes ind i en try-catch.

Exceptions kan slås til, hvis det passer en.
Efterhånden som du får kigget igennem manualen, specielt klassen PDO's
metoder, kommer du til det. (nudge nudge :)

> Hvad er syntaksen for den normale ...or die(mysql_error()) i PDO og sqlite?

Så vidt jeg ved bliver false/null konsekvent brugt som returværdi i
tilfælde af fejl, så samme metode *kan* godt bruges (bortset fra du
fx. vil bruge $dbh->errorInfo() til at få fejlteksten), men selvom det
ganske vist er normalt brugt i eksempler i php's online manual, synes
jeg ikke du skal gøre det til din normale brug.
Det at udnytte/misbruge den måde php (og fleste andre sprog) evaluerer
logiske udtryk kan være fint nok, men til fejlhåndtering er det lidt
noget knold.


/Bent

YJ (28-05-2006)
Kommentar
Fra : YJ


Dato : 28-05-06 08:01


"Bent Stigsen" <ngap@thevoid.dk> wrote in message
news:4478d8ad$0$47078$edfadb0f@dread15.news.tele.dk...
> YJ wrote:
> [snip]
> > $dbh = new PDO('sqlite::sqlitedb');
>
> kun et ":"

Ah ja.


> > $dbh->query($db, 'CREATE TABLE foo (bar varchar(10))');
>
> sqlite kender ikke "varchar", men bruger bare "text" uden angivelse af
> størrelse.

Det er jeg ikke sikker på.
Eksemplet er fra php.net og zend.com og her er et udsnit af en DB:

** This file contains an SQLite 2.1 database ** (uãÚ W . Ð. .
.. . ì
. Ò ? ......Òtable groupes groupes 8 CREATE TABLE groupes (
groupe_id INTEGER PRIMARY KEY, groupe_name VARCHAR(50), properties TINYINT ,
execSQL TINYINT , data TINYINT , export TINYINT , empty TINYINT , del
TINYINT )


Men det fejler nu alligevel, da filen fortsat er tom.
Maskinen kan godt anvende SQLite, da SQLiteManager virker fint.

Jeg checker manualen og koden til manager og ser om det hele mon ikke går
alligevel

Tak for hjælpen

YJ



Bent Stigsen (28-05-2006)
Kommentar
Fra : Bent Stigsen


Dato : 28-05-06 11:48

YJ wrote:
> "Bent Stigsen" <ngap@thevoid.dk> wrote in message
> news:4478d8ad$0$47078$edfadb0f@dread15.news.tele.dk...
>> YJ wrote:
[snip]
>>> $dbh->query($db, 'CREATE TABLE foo (bar varchar(10))');

Havde jeg ikke lige set. Parameter $db skal ikke være der.
$dbh->query('CREATE TABLE foo (bar varchar(10))');

http://www.php.net/manual/en/function.pdo-query.php

>> sqlite kender ikke "varchar", men bruger bare "text" uden angivelse af
>> størrelse.
>
> Det er jeg ikke sikker på.

Nej, den ved vitterlig ikke hvad varchar er. I SQLite version 2 er alt
text, uanset hvad du skriver. SQLite version 3 har flere storage
classes og vil kun evt. bruge det som et hint til hvordan den skal
behandle det du nu smider efter den.

Når du får det hele til at virke, kan du prøve sådan noget som:

create table foo1 ( bar int );
insert into foo1(bar) values('en tekst');
select * from foo1;

create table foo2 ( bar varchar(5) );
insert into foo2(bar) values('mere end 5 chars');
select * from foo2;

create table foo3 ( bar fnools );
insert into foo3(bar) values(123);
select * from foo3;

se også:
http://www.sqlite.org/datatype3.html

> Eksemplet er fra php.net og zend.com og her er et udsnit af en DB:
>
> ** This file contains an SQLite 2.1 database ** (uãÚ W . Ð. .
> . . ì
> . Ò ? ......Òtable groupes groupes 8 CREATE TABLE groupes (
> groupe_id INTEGER PRIMARY KEY, groupe_name VARCHAR(50), properties TINYINT ,
> execSQL TINYINT , data TINYINT , export TINYINT , empty TINYINT , del
> TINYINT )

Ja, SQLite gemmer den create statement der er brugt til at oprette
tabeller, men det er vist bare for brugerens skyld.


/Bent

YJ (28-05-2006)
Kommentar
Fra : YJ


Dato : 28-05-06 14:52


"Bent Stigsen" <ngap@thevoid.dk> wrote in message
news:44797fe2$0$47053$edfadb0f@dread15.news.tele.dk...
> YJ wrote:
> > "Bent Stigsen" <ngap@thevoid.dk> wrote in message
> > news:4478d8ad$0$47078$edfadb0f@dread15.news.tele.dk...
> >> YJ wrote:
> [snip]
> >>> $dbh->query($db, 'CREATE TABLE foo (bar varchar(10))');
>
> Havde jeg ikke lige set. Parameter $db skal ikke være der.

AHA! Så var den der!
Tak for det. Tror jeg havde stirret mig blind.



> $dbh->query('CREATE TABLE foo (bar varchar(10))');
>
> http://www.php.net/manual/en/function.pdo-query.php
>
> >> sqlite kender ikke "varchar", men bruger bare "text" uden angivelse af
> >> størrelse.
> >
> > Det er jeg ikke sikker på.
>
> Nej, den ved vitterlig ikke hvad varchar er. I SQLite version 2 er alt
> text, uanset hvad du skriver. SQLite version 3 har flere storage
> classes og vil kun evt. bruge det som et hint til hvordan den skal
> behandle det du nu smider efter den.

Ah jeg ser.
Jeg troede du mente man slet ikke kunne angive den.

Mange tak for hjælpen - Det virker nu

YJ



Michael Zedeler (27-05-2006)
Kommentar
Fra : Michael Zedeler


Dato : 27-05-06 20:10

YJ wrote:
> Men den giver:
>
> Warning: dl() [function.dl]: Unable to load dynamic library
> '/usr/lib/php/modules//usr/lib/php/modules/pdo_sqlite.so' -

Den sti ser helt forkert ud. Prøv dl("pdo_sqlite.so").

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

YJ (27-05-2006)
Kommentar
Fra : YJ


Dato : 27-05-06 20:12


"Michael Zedeler" <michael@zedeler.dk> wrote in message
news:Bu1eg.127$zb2.33@news.get2net.dk...
> YJ wrote:
> > Men den giver:
> >
> > Warning: dl() [function.dl]: Unable to load dynamic library
> > '/usr/lib/php/modules//usr/lib/php/modules/pdo_sqlite.so' -
>
> Den sti ser helt forkert ud. Prøv dl("pdo_sqlite.so").



Warning: Module 'pdo_sqlite' already loaded in Unknown on line 0

Men så er vi da på det rene med den del af det!
Nu mangler jeg vist bare syntaksen.


Tak,
YJ



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste