/ 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
Apostrof eller ej ved mysql queries?...
Fra : Morten Jørgensen


Dato : 26-05-02 10:46

Hvis man f.eks. har denne query: mysql_query("SELECT * FROM tabel WHERE
id=1");
Eller denne: mysql_query("INSERT INTO tabel WHERE id=1");
Eller denne: mysql_query("UPDATE tabel SET tekst=hurra WHERE id=1");

Hvordan ved man så hvornår at man skal sætte apostrof ' uden om tallet 1 og
hurra?
Jeg mener at have hørt at det ikke er nødvendigt ved kolonner i mysql
databasen hvor datatypen er INT...

--
M.v.h. Morten Jørgensen
www.StartLinket.dk
- Portal - BytteProgrammer -



 
 
Christian Joergensen (26-05-2002)
Kommentar
Fra : Christian Joergensen


Dato : 26-05-02 11:00

On Sun, 26 May 2002 11:45:58 +0200, Morten Jørgensen wrote:

> Jeg mener at have hørt at det ikke er nødvendigt ved kolonner i mysql
> databasen hvor datatypen er INT...

"Ikke nødvendigt" er ikke altid "God skik". Jeg mener, at man altid bør
quote sine værdier i mysql-queries.

--
Christian Jørgensen | The knack of flying is learning how to throw
http://www.razor.dk | yourself at the ground and miss.

Morten Jørgensen (26-05-2002)
Kommentar
Fra : Morten Jørgensen


Dato : 26-05-02 11:11

"Christian Joergensen" wrote in message...
> "Ikke nødvendigt" er ikke altid "God skik". Jeg mener, at man altid bør
> quote sine værdier i mysql-queries.

Ja, måske jeg skulle begynde på det... Så er jeg da sikker på at der ikke
går noget galt...
Men det vil bare tage rigtig lang tid at gøre det jo...
Men det vil også give en masse fylde og vil gøre det rimelig
uoverskueligt...

--
M.v.h. Morten Jørgensen
www.StartLinket.dk
- Portal - BytteProgrammer -



Christian Joergensen (26-05-2002)
Kommentar
Fra : Christian Joergensen


Dato : 26-05-02 11:14

On Sun, 26 May 2002 12:11:27 +0200, Morten Jørgensen wrote:

> Men det vil også give en masse fylde og vil gøre det rimelig
> uoverskueligt...

Vil du ikke lige forklare hvori uoverskueligheden opstår?

--
Christian Jørgensen | The knack of flying is learning how to throw
http://www.razor.dk | yourself at the ground and miss.

Morten Jørgensen (26-05-2002)
Kommentar
Fra : Morten Jørgensen


Dato : 26-05-02 12:01

"Christian Joergensen" <mail@phpguru.dk> wrote in message
news:pan.2002.05.26.10.14.18.17805.19469@phpguru.dk...
> Vil du ikke lige forklare hvori uoverskueligheden opstår?

Det kommer i hvert fald til at se mere rodet ud, når der kommer flere tegn
jo...
F.eks. denne her:

id=$id");
id='$id'");

Når der kommer en masse tegn ekstra, så bliver helt skærmen jo sort af
tegn...
Og jeg har også svært ved at bestemme mig for hvornår at jeg skal bruge dem.
F.eks. ved disse:

if ($id == 25) {
if ($id >= 25) {
if ($id <> 25) {
id=1
id>1
id < 2
id<>$id

Skal man bruge apostof på alle sammen?
F.eks. nogle så simple som id=1, er det virkelig nødvendigt at skrive
id='1'?
Jeg mener at have hørt at det kun er nogle bestemte datatyper at man behøver
at gøre det ved...

--
M.v.h. Morten Jørgensen
www.StartLinket.dk
- Portal - BytteProgrammer -



Jonas Koch Bentzen (26-05-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 26-05-02 12:03

Christian Joergensen skrev:

> On Sun, 26 May 2002 11:45:58 +0200, Morten Jørgensen wrote:
>
>> Jeg mener at have hørt at det ikke er nødvendigt ved kolonner i mysql
>> databasen hvor datatypen er INT...
>
> "Ikke nødvendigt" er ikke altid "God skik". Jeg mener, at man altid
> bør quote sine værdier i mysql-queries.

I PHP- og SQL-jargon betyder at citere (quote) flere forskellige ting:

- Der er det, at man sætter citationstegn rundt om dataerne, man
indsætter:
pg_query("INSERT INTO tabel VALUES ( '1' )");

- og så er der det, at man sætter en omvendt skråstreg foran tegn, der
kan skabe problemer, f.eks. citationstegn mindt inde i en streng:

$streng = "En lille 'test'";
pg_query("INSERT INTO tabel VALUES ( '".pg_escape_string($streng)."'
)");

Hvor vi sagtens kan være enige om, at man altid skal gøre det sidste, så
er vi til gengæld ikke enige om, at det altid er en god ide at gøre det
første, når det er et tal, man indsætter. Der er nemlig det gode ved
det, at man lettere opdager fejl, hvis man ikke har citationstegn om
værdien.

Et eksempel: Lad os sige, at vi skal finde alle de rækker, hvor id =
værdien af variablen $id:

pg_query("SELECT navn FROM brugere WHERE id =
".pg_escape_string($id)."");

Her er det en fordel at undlade at bruge citationstegn rundt om $id,
fordi hvis brugeren eller programmøren ved et uheld kommer til at
tildele $id en streng, så vil databaseserveren protestere, fordi
sætningen så bliver syntaktisk forkert. Sætter man derimod
citationstegn rundt om $id, så er SQL-sætningen syntaktisk korrekt, men
man får ikke det resultat, man ventede, og det er sværere at debugge.

Det skal dog siges, at jeg selv altid sætter citationstegn rundt om
værdierne - men det er kun fordi, jeg bruger PEAR DB, hvor metoden
quote() selv sætter citationstegn rundt om værdierne (samt sørger for
at sætte omvendte skråstrege foran "problem"-tegn).

--
Jonas Koch Bentzen

Morten Jørgensen (26-05-2002)
Kommentar
Fra : Morten Jørgensen


Dato : 26-05-02 12:18

"Jonas Koch Bentzen" <ingen.email@eksempel.dk> wrote in message
news:acqfcj$3m0$1@sunsite.dk...
> I PHP- og SQL-jargon betyder at citere (quote) flere forskellige ting:
>
> - Der er det, at man sætter citationstegn rundt om dataerne, man
> indsætter:
> pg_query("INSERT INTO tabel VALUES ( '1' )");
>
> - og så er der det, at man sætter en omvendt skråstreg foran tegn, der
> kan skabe problemer, f.eks. citationstegn mindt inde i en streng:
>
> $streng = "En lille 'test'";
> pg_query("INSERT INTO tabel VALUES ( '".pg_escape_string($streng)."'
> )");
>
> Hvor vi sagtens kan være enige om, at man altid skal gøre det sidste, så
> er vi til gengæld ikke enige om, at det altid er en god ide at gøre det
> første, når det er et tal, man indsætter. Der er nemlig det gode ved
> det, at man lettere opdager fejl, hvis man ikke har citationstegn om
> værdien.
>
> Et eksempel: Lad os sige, at vi skal finde alle de rækker, hvor id =
> værdien af variablen $id:
>
> pg_query("SELECT navn FROM brugere WHERE id =
> ".pg_escape_string($id)."");
>
> Her er det en fordel at undlade at bruge citationstegn rundt om $id,
> fordi hvis brugeren eller programmøren ved et uheld kommer til at
> tildele $id en streng, så vil databaseserveren protestere, fordi
> sætningen så bliver syntaktisk forkert. Sætter man derimod
> citationstegn rundt om $id, så er SQL-sætningen syntaktisk korrekt, men
> man får ikke det resultat, man ventede, og det er sværere at debugge.
>
> Det skal dog siges, at jeg selv altid sætter citationstegn rundt om
> værdierne - men det er kun fordi, jeg bruger PEAR DB, hvor metoden
> quote() selv sætter citationstegn rundt om værdierne (samt sørger for
> at sætte omvendte skråstrege foran "problem"-tegn).

Det var noget af et svar... Men er det ikke rigtigt at hvis det bare er et
tal, så behøver man ikke apostroffer?
Eller er det kun hvis det er INT datatypen?

--
M.v.h. Morten Jørgensen
www.StartLinket.dk
- Portal - BytteProgrammer -



Jonas Koch Bentzen (26-05-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 26-05-02 12:44

Morten Jørgensen skrev:

> Men er det ikke rigtigt at hvis det bare
> er et tal, så behøver man ikke apostroffer?

Jo.

--
Jonas Koch Bentzen

Morten Jørgensen (26-05-2002)
Kommentar
Fra : Morten Jørgensen


Dato : 26-05-02 13:13

"Jonas Koch Bentzen" <ingen.email@eksempel.dk> wrote in message
news:acqhpf$a9c$1@sunsite.dk...
> Jo.

Hvad så hvis det er et tal i en VARCHAR datatype f.eks?

Hvornår er det at man vil kunne få fejlmeddelser så? Er det ikke hvis det er
noget tekst som der ikke er apostrof om?

--
M.v.h. Morten Jørgensen
www.StartLinket.dk
- Portal - BytteProgrammer -



Jonas Koch Bentzen (26-05-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 26-05-02 15:09

Morten Jørgensen skrev:
>
> Hvornår er det at man vil kunne få fejlmeddelser så? Er det ikke hvis
> det er noget tekst som der ikke er apostrof om?

Jo.

--
Jonas Koch Bentzen

Morten Jørgensen (26-05-2002)
Kommentar
Fra : Morten Jørgensen


Dato : 26-05-02 15:34

"Jonas Koch Bentzen" <ingen.email@eksempel.dk> wrote in message
news:acqq9d$2cg$1@sunsite.dk...
> Jo.

Okay, mente det nok.

--
M.v.h. Morten Jørgensen
www.StartLinket.dk
- Portal - BytteProgrammer -



-Martin- (27-05-2002)
Kommentar
Fra : -Martin-


Dato : 27-05-02 00:55

On Sun, 26 May 2002 11:45:58 +0200, "Morten Jørgensen"
<admin@startlinket.dk> wrote:

>Hvis man f.eks. har denne query: mysql_query("SELECT * FROM tabel WHERE
>id=1");
>Eller denne: mysql_query("INSERT INTO tabel WHERE id=1");
>Eller denne: mysql_query("UPDATE tabel SET tekst=hurra WHERE id=1");
>
>Hvordan ved man så hvornår at man skal sætte apostrof ' uden om tallet 1 og
>hurra?
>Jeg mener at have hørt at det ikke er nødvendigt ved kolonner i mysql
>databasen hvor datatypen er INT...

Hva med fx
mysql_query("INSERT INTO VALUES (NULL,'$_POST[jow]')");

I følge PHP manualen skal man enten sætte ' ' rundt om jow eller " "
rundt om ... Link: http://www.php.net/manual/en/reserved.variables.php

MEN hvis man enten sætter ' ' eller " " i queryen, så melder den fejl!

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

Månedens bedste
Årets bedste
Sidste års bedste