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

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
mysqli eller pdo?
Fra : Preben Nielsen


Dato : 08-02-11 07:12

Jeg er blevet anbefalet at bruge mysqli i stedet for mysql til den
database, som det er meningen skal ligge bag denne side
http://vinsiderne.dk/test10/v1.htm og som skal rumme alle sitets
vinanmeldelser. Den skal virke på den måde, at brugerens valg øverst
på siden skal genere en oversigt over de valgte vine i det layout,
som
ses på sidens nederste halvdel. Det skal også være sådan, at nogle
valg (fx valg af Land) begrænser valgrmulighederne andre steder (fx
Område, så man kun ser de orråder, der er aktuelle for det pågældende
land). Selve vinanmeldelserne kommer man så til ved at klikke på Navn
Navn.

Da jeg så googlede for at prøve at finde ud af hvad forskellen mellem
mysql og mysqli er, dukkede anbefalinger af et tredje alternativ,
PDO,
op i indlæggene. Jeg fandt dog aldrig rigtig ud af, hvad pdo er, om
det er et andet databasesystem eller om det er en slags overbygning,
som gør det lettere, hvis man senere ville skifte fra fx mysqli til
et
andet databasesystem, og at man således kan bruge pdo sammen med
mysqli, eller om det er art brugerflade, der gør det lettere at
arbejde med databasen. Kan nogen oplyse mig?

Da et større arbejde forestår med at putte virkelig mange
vinanmeldelser i database, er det vigtigt for mig at jeg fra start
kommer til at arbejde med det rigtige "system". Hvad vil I anbefale?

Jeg skal understrege, at mit kendskab til mysql begrænser sig til at
redigere brugerdata i et phpBB forum og den slags småting (dvs. jeg
har ikke selv fremstillet noget) via phpMyAdmin. Jeg har en hel del
databasekendskab i forbindelse med fremstilling af en ganske stor
database i Access.

/Preben


 
 
Birger Sørensen (08-02-2011)
Kommentar
Fra : Birger Sørensen


Dato : 08-02-11 16:00

Preben Nielsen formulerede tirsdag:
> Jeg er blevet anbefalet at bruge mysqli i stedet for mysql til den
> database, som det er meningen skal ligge bag denne side
> http://vinsiderne.dk/test10/v1.htm og som skal rumme alle sitets
> vinanmeldelser. Den skal virke på den måde, at brugerens valg øverst
> på siden skal genere en oversigt over de valgte vine i det layout,
> som
> ses på sidens nederste halvdel. Det skal også være sådan, at nogle
> valg (fx valg af Land) begrænser valgrmulighederne andre steder (fx
> Område, så man kun ser de orråder, der er aktuelle for det pågældende
> land). Selve vinanmeldelserne kommer man så til ved at klikke på Navn
> Navn.
>
> Da jeg så googlede for at prøve at finde ud af hvad forskellen mellem
> mysql og mysqli er, dukkede anbefalinger af et tredje alternativ,
> PDO,
> op i indlæggene. Jeg fandt dog aldrig rigtig ud af, hvad pdo er, om
> det er et andet databasesystem eller om det er en slags overbygning,
> som gør det lettere, hvis man senere ville skifte fra fx mysqli til
> et
> andet databasesystem, og at man således kan bruge pdo sammen med
> mysqli, eller om det er art brugerflade, der gør det lettere at
> arbejde med databasen. Kan nogen oplyse mig?
>
> Da et større arbejde forestår med at putte virkelig mange
> vinanmeldelser i database, er det vigtigt for mig at jeg fra start
> kommer til at arbejde med det rigtige "system". Hvad vil I anbefale?
>
> Jeg skal understrege, at mit kendskab til mysql begrænser sig til at
> redigere brugerdata i et phpBB forum og den slags småting (dvs. jeg
> har ikke selv fremstillet noget) via phpMyAdmin. Jeg har en hel del
> databasekendskab i forbindelse med fremstilling af en ganske stor
> database i Access.
>
> /Preben

Jeg foretrækker PHP og MySQL - mest fordi jeg aldrig har arbejdet med
andet. Har brugt ODBC interface i Delphi engang for længe siden, og
også leget med Access. Da jeg så skulle til at bruge tingene til noget
fornuftigt, blev det PHP og MySQL, fordi det er tilgængeligt hos langt
de fleteste udbydere, og opgaven var på nettet.

PHP har mange andre muligheder
http://dk.php.net/manual/en/refs.database.php
men jeg tvivler på, at det vil være muligt at skrive sine scripts, så
det umiddelbart vil være muligt at skifte MySQL ud med noget andet.

SQL = Structured Query Language. I den her sammenhæng, et sprog der
bruges til at "snakke med" en database.
MySQL er en database - eller det program der udgør en database-server.

http://dk.php.net/manual/en/class.pdo.php
http://dk.php.net/manual/en/book.mysql.php
http://dk.php.net/manual/en/class.mysqli.php

pdo er en forbindelse mellem PHP og en databse-server.
mysql og mysqli er interfaces mellem PHP og en MySQL database.

Som jeg forstår det, er pdo en forbindelse til en hvilken som helst
database-server. Man skal altså selv kende muligheder i og kommandoer
til den aktuelle database.
mysql og mysqli er dedikeret til en MySQL database, og PHP kender
muligheder og kommandoer, og der er funktioner i PHP, der understøtter
databsens kommandoer. (Hvilket emm, gør det lettere at arbejde med.)
mysqli er en videreudbygning af mysql - ved at anvende prepared
statements, er mysqli langt sikrere end mysql - det er så også lidt
mere besværligt at have med at gøre, end mysql.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Arne Vajhøj (09-02-2011)
Kommentar
Fra : Arne Vajhøj


Dato : 09-02-11 03:24

On 08-02-2011 09:11, Preben Nielsen wrote:
> Jeg er blevet anbefalet at bruge mysqli i stedet for mysql til den
> database, som det er meningen skal ligge bag denne side
> http://vinsiderne.dk/test10/v1.htm og som skal rumme alle sitets
> vinanmeldelser. Den skal virke på den måde, at brugerens valg øverst
> på siden skal genere en oversigt over de valgte vine i det layout,
> som
> ses på sidens nederste halvdel. Det skal også være sådan, at nogle
> valg (fx valg af Land) begrænser valgrmulighederne andre steder (fx
> Område, så man kun ser de orråder, der er aktuelle for det pågældende
> land). Selve vinanmeldelserne kommer man så til ved at klikke på Navn
> Navn.
>
> Da jeg så googlede for at prøve at finde ud af hvad forskellen mellem
> mysql og mysqli er, dukkede anbefalinger af et tredje alternativ,
> PDO,
> op i indlæggene. Jeg fandt dog aldrig rigtig ud af, hvad pdo er, om
> det er et andet databasesystem eller om det er en slags overbygning,
> som gør det lettere, hvis man senere ville skifte fra fx mysqli til
> et
> andet databasesystem, og at man således kan bruge pdo sammen med
> mysqli, eller om det er art brugerflade, der gør det lettere at
> arbejde med databasen. Kan nogen oplyse mig?
>
> Da et større arbejde forestår med at putte virkelig mange
> vinanmeldelser i database, er det vigtigt for mig at jeg fra start
> kommer til at arbejde med det rigtige "system". Hvad vil I anbefale?

PDO er et database API ligesom mysql og mysqli, men mens disse er
MySQL specifikke er PDO ligesom f.eks. PEAR MDB til mange
forskellige databaser.

Du bør ikke bruge mysql API - mysqli er meget bedre. En af de
vigtigste grunde er at mysqli prepared statement er meget bedre
end mysql_real_escape_string.

Men jeg vil faktisk anbefale dig at vælge PDO. PDO understøtter
prepared statement ligesom mysqli, men API'et er lidt nemmere
og pænere at bruge.

Og oven i det kommer muligheden for nemmere at skifte database
på et senere tidspunkt.

Arne

Preben Nielsen (15-02-2011)
Kommentar
Fra : Preben Nielsen


Dato : 15-02-11 00:45

Tak for jeres input.

Jeg er på baggrund af, hvad I skriver ikke i tvivl om at jeg skal
undgå mysql, og jeg hælder aktuelt til pdo.

Som nævnt har jeg ingen erfaringer med databaser på nettet, så jeg har
nogle grundspørgsmål angående hvordan det hele virker.

1) Ligesom man i forbindelse med mysql bruger phpMyAdmin, når man
arbejder med databasen, hvad bruger man så når man arbejder med henh.
mysqli og pdo? Og hvor får man fat i de programmer? Er de gratis?

2) Er sikkerheden mod injection ligeså stor med pdo som med mysqli?

3) Det er som nævnt anmeldelser af rigtig mange vine, som skal i
database. Kan disse anmeldelser organiseres i mapper og undermapper,
ligesom når man arbejder med html-filer? (På mit nuværende site er
hver anmeldelse en html-side.)

4) Jeg går ud fra at en anmeldelse i databasesprog bliver til en post.
Bliver den søgbar af søgemaskiner på samme måde som var det en html-
fil? Det vil jo fx kræve at anmeldelsen har en <title> Måske sådan en
post stadig er eller kan være en html-fil?

5) Er det i det hele taget html-kode der puttes i databasen eller
hvad? Der bliver jo fortsat brug for fx at linke fra den enkelte
anmeldelse. Og der skal jo være forbindelse til stylesheet så
anmeldelserne bliver layoutet som ønsket.

/Preben

Leif Neland (15-02-2011)
Kommentar
Fra : Leif Neland


Dato : 15-02-11 11:40

Den 15-02-2011 08:44, Preben Nielsen skrev:
> Tak for jeres input.
>
> Jeg er på baggrund af, hvad I skriver ikke i tvivl om at jeg skal
> undgå mysql, og jeg hælder aktuelt til pdo.
>
> Som nævnt har jeg ingen erfaringer med databaser på nettet, så jeg har
> nogle grundspørgsmål angående hvordan det hele virker.
>
> 1) Ligesom man i forbindelse med mysql bruger phpMyAdmin, når man
> arbejder med databasen, hvad bruger man så når man arbejder med henh.
> mysqli og pdo? Og hvor får man fat i de programmer? Er de gratis?
>

Databasen er mysql, uanset om du bruger php's mysql,mysqli,pdo eller
dbx-interface.

Du kan sagtens bruge phpMyAdmin til at pille i databasen under alle
omstændigheder uanset websidens interface.

Naturligvis under forudsætning at du ikke bruger en anden database end
mysql med pdo eller dbx

Men phpmyadmin skal vel kun bruges under konstruktionen af databasen,
ikke til redigering af data; der bør du bygge dit eget admin-interface.

> 2) Er sikkerheden mod injection ligeså stor med pdo som med mysqli?

Hvis du bruger parametized queries/prepared statements, så ja.
Hvis du laver "Select * from tab where id=".$_GET['id'], så er de lige
usikre :-/

>
> 3) Det er som nævnt anmeldelser af rigtig mange vine, som skal i
> database. Kan disse anmeldelser organiseres i mapper og undermapper,
> ligesom når man arbejder med html-filer? (På mit nuværende site er
> hver anmeldelse en html-side.)

Ja; det er almindeligt at have en træstruktur i menuen, hvor hvert
element er linket til sin "parent", så du kan lave så dybe strukturer
som nødvendigt:
Rødvine -> Frankrig -> Bourgogne -> Yonne -> Avallon -> Maison
Robespierre -> 1990

Enten bliver hver vin-record et felt med kategori_id, og så kan hver vin
kun være i een kategori, eller du kan lave en tabel med kategori_id og
vin_id, og så kan vinen være i mange kategorier.

Du kan også vælge at et kategorifelt til hver af måderne, du vil
organisere efter, f.ex. efter land, type eller drue.

> 4) Jeg går ud fra at en anmeldelse i databasesprog bliver til en post.
> Bliver den søgbar af søgemaskiner på samme måde som var det en html-
> fil? Det vil jo fx kræve at anmeldelsen har en<title> Måske sådan en
> post stadig er eller kan være en html-fil?
>
> 5) Er det i det hele taget html-kode der puttes i databasen eller
> hvad? Der bliver jo fortsat brug for fx at linke fra den enkelte
> anmeldelse. Og der skal jo være forbindelse til stylesheet så
> anmeldelserne bliver layoutet som ønsket.

Du _kan_ vælge bare at kaste kun html ind i databasen, men det skal jo
alligevel pakkes ind i dit standardlayout med menu, css osv.

Det vil være bedre at have felter i databasen til titel, årgang, type,
oprindelse, billede, og andre standardoplysninger, og så et
brødtekstfelt til selve anmeldelsen.

Det vil gøre det lettere at få et ensartet layout, og data kan også
bruges på andre måder. F.ex. kan du lave en app til smartphonen, så man
står i butikken, scanner stregkoden ind, og ser anmeldelsen
Eller du kan ihvertfald lave en telefon-optimeret udgave af siden, uden
at skulle taste data ind igen.

I og for sig er det vel en webshop man ikke kan handle i, du vil lave;
måske kan du få inspiration derfra, hvis du ser i
administrationsinterfacet på demo-udgaver på nettet.

Leif

Jørn Andersen (17-02-2011)
Kommentar
Fra : Jørn Andersen


Dato : 17-02-11 15:04

On Tue, 15 Feb 2011 11:39:59 +0100, Leif Neland <leif@neland.dk>
wrote:

Jeg er helt enig med Leif i, at man skal undgå at have HTML i
databasen - på den måde kan man evt. senere lave mulighed for at
udskrive i andre formater, fx PDF, Word, RTF osv.

>Det vil være bedre at have felter i databasen til titel, årgang, type,
>oprindelse, billede, og andre standardoplysninger, og så et
>brødtekstfelt til selve anmeldelsen.

Men lige den sidste skal der nok tænkes over: Hvis der skal være
mulighed for at have *flere* anmeldelser af et produkt (måske ikke nu,
men senere), bør anmeldelsen være i en tabel for sig.

I det hele taget skal man tænke sig grundigt om, når man designer sin
database - det kan være besværligt at rette, når først man har fået en
masse data i den.

Good luck!

Mvh. Jørn

--
Jørn Andersen
socialister.dk
marxisme.dk

Arne Vajhøj (16-02-2011)
Kommentar
Fra : Arne Vajhøj


Dato : 16-02-11 02:35

On 15-02-2011 02:44, Preben Nielsen wrote:
> Jeg er på baggrund af, hvad I skriver ikke i tvivl om at jeg skal
> undgå mysql, og jeg hælder aktuelt til pdo.
>
> Som nævnt har jeg ingen erfaringer med databaser på nettet, så jeg har
> nogle grundspørgsmål angående hvordan det hele virker.
>
> 1) Ligesom man i forbindelse med mysql bruger phpMyAdmin, når man
> arbejder med databasen, hvad bruger man så når man arbejder med henh.
> mysqli og pdo? Og hvor får man fat i de programmer? Er de gratis?

De bruger alle sammen MySQL.

Det er:

din PHP kode--mysql extension--libmysql--------MySQL database
din PHP kode--mysqli extension--libmysql--------MySQL database
din PHP kode--PDO extension--MySQL PDO driver--libmysql--------MySQL
database

Så du kan fint bruge PHPMyAdmin.

PDO har den forskel at du kan nemt skifte til en anden database
såsom POstgreSQL, SQLite etc..

> 2) Er sikkerheden mod injection ligeså stor med pdo som med mysqli?

Du skal altid gøre noget i din PHP kode for at undgå SQL injections,
men jeg vil mene at:
- mysqli prepared statement er nemmere end mysql mysql_real_escape_string
- PDO prepared statement er nemmere end mysqli prepared statement

> 3) Det er som nævnt anmeldelser af rigtig mange vine, som skal i
> database. Kan disse anmeldelser organiseres i mapper og undermapper,
> ligesom når man arbejder med html-filer? (På mit nuværende site er
> hver anmeldelse en html-side.)

Nej.

Smid alle vine i samme tabel.

Når du passerer en 100 millioner vine, så begynd og kig på
partitionering.

> 4) Jeg går ud fra at en anmeldelse i databasesprog bliver til en post.
> Bliver den søgbar af søgemaskiner på samme måde som var det en html-
> fil? Det vil jo fx kræve at anmeldelsen har en<title> Måske sådan en
> post stadig er eller kan være en html-fil?

Databasen er slet ikke direkte søgbar fra søgemaskiner. Søgemaskinerne
vil indexere de sider du genererer udfra indholdet af databasen.

> 5) Er det i det hele taget html-kode der puttes i databasen eller
> hvad? Der bliver jo fortsat brug for fx at linke fra den enkelte
> anmeldelse. Og der skal jo være forbindelse til stylesheet så
> anmeldelserne bliver layoutet som ønsket.

Nej.

Gem data i databasen og lad din applikation håndtere layoutet.

Arne

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

Månedens bedste
Årets bedste
Sidste års bedste