/ 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
Mysql fejler når der ikke er noget resulta~
Fra : Mikkel Jakobsen


Dato : 21-09-07 16:22

Hej Ng..

Jeg har følgende php kode hvor jeg henter data ud fra mysql.

kode:
$antal_off_billeder = mysql_result(mysql_query("SELECT COUNT(*)
FROM billeder where tilstand ='off' and Galleri_id='$visgalleri'
"),0) or die("fejl");

koden virker fint nok når der er et resultat, men når der intet
resultat er, altså når der ikke er nogle billeder i '$visgalleri'
med 'tilstan' = 'off', fejler koden.

Er der nogen der kan hjælpe med at finde fejlen eller omskrive
mysql delen.

Jeg er ikke så skrap til mysql.

Mikkel



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Martin (21-09-2007)
Kommentar
Fra : Martin


Dato : 21-09-07 16:38

Mikkel Jakobsen wrote:
> Hej Ng..
>
> Jeg har følgende php kode hvor jeg henter data ud fra mysql.
>
> kode:
> $antal_off_billeder = mysql_result(mysql_query("SELECT COUNT(*)
> FROM billeder where tilstand ='off' and Galleri_id='$visgalleri'
> "),0) or die("fejl");

Fjern fejl, og skriv istedet mysql_error()

Desuden så returner mysql_result ingen fejl... det er kun mysql_query
der gør dette.

Derfor burde din linje se således


$antal_off_billeder =
mysql_result(
mysql_query("
SELECT COUNT(*)
FROM billeder
WHERE tilstand ='off'
AND Galleri_id='".$visgalleri."'
") OR DIE (mysql_error())
,0);

Desuden har du også en fejl i Galleri_id='$visgalleri'

PHP variabler bliver IKKE parsed når de står i ' klammer, kun i " klammer.

For at undgå dette kan man parse sin kode ordentligt.
Fx

$var = 'Hej '.$var;
$var = 'Hej '.$var.' med dig';


Så nej - din kode er faktisk ikke fejlfri

Mikkel Jakobsen (21-09-2007)
Kommentar
Fra : Mikkel Jakobsen


Dato : 21-09-07 16:58

> Derfor burde din linje se således
>
>
> $antal_off_billeder =
> mysql_result(
> mysql_query("
> SELECT COUNT(*)
> FROM billeder
> WHERE tilstand ='off'
> AND Galleri_id='".$visgalleri."'
> ") OR DIE (mysql_error())
> ,0);
>
> Desuden har du også en fejl i Galleri_id='$visgalleri'
>
> PHP variabler bliver IKKE parsed når de står i ' klammer, kun i " klammer.



Mystisk men det virker heller ikke..

Den giver ingen fejl, men returnere ikke nogen værdi..
(ved med sikkerhed der er et resultat).
er det variablen det er galt med, den kommer fra:

xxxxx.adsl.dk/galleri/galleridetaljer.php?visgalleri=39



Mikkel

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Dan Storm (21-09-2007)
Kommentar
Fra : Dan Storm


Dato : 21-09-07 17:05

Martin skrev:
> Desuden har du også en fejl i Galleri_id='$visgalleri'
>
> PHP variabler bliver IKKE parsed når de står i ' klammer, kun i " klammer.
>
> For at undgå dette kan man parse sin kode ordentligt.
> Fx
>
> $var = 'Hej '.$var;
> $var = 'Hej '.$var.' med dig';

Ovenstående er korrekt, bare ikke i forbindelse med spørgsmålet.

$sql = "SELECT * FROM tabel WHERE field='$var'";

Ovenstående sætning vil virke efter hensigten.
Det du fortæller trådstarter er at han skal skrive sætningen således:

$sql = "SELECT * FROM tabel WHERE field='.$var.'";

Det vil ikke fejle, men resultatet vil ikke være det forventede.

> Så nej - din kode er faktisk ikke fejlfri

Hvor påstår han også det?


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Bertel Lund Hansen (21-09-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 21-09-07 19:33

Martin skrev:

> Desuden har du også en fejl i Galleri_id='$visgalleri'

> PHP variabler bliver IKKE parsed når de står i ' klammer, kun i " klammer.

Men du glemmer at hele det citerede udtryk står inden i dobbelte
anførselstegn, så det er ikke nogen fejl.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Dan Storm (21-09-2007)
Kommentar
Fra : Dan Storm


Dato : 21-09-07 17:12

Mikkel Jakobsen skrev:
> Hej Ng..
>
> Jeg har følgende php kode hvor jeg henter data ud fra mysql.
>
> kode:
> $antal_off_billeder = mysql_result(mysql_query("SELECT COUNT(*)
> FROM billeder where tilstand ='off' and Galleri_id='$visgalleri'
> "),0) or die("fejl");


Din kode er lidt rodet og skaber ikke et nemt overblik. Prøv at dele den
op således:

$sql = "SELECT COUNT(*) as nb FROM billeder WHERE tilstand='off' and
Galleri_id='".$visgalleri."'":
$result = mysql_query($sql) or die(mysql_error());
$antal_off_billeder = mysql_result($result, 0, "nb");

Læg mærke til de ændringer jeg har lavet i koden:
COUNT(*) as nb // returnerer resultatet som et felt kaldet nb

Galleri_id='".$visgalleri."' // det ser pænere ud at holde variabler
uden for strengen

$result = mysql_query($sql) or die(mysql_error()); // overskuelighed,
resultatet kommer i variablen $result. Hvis mysql fejler dør den og
giver dig mysql fejlen som du så kan spørge os om, hvis det stadig ikke
virker.

$antal_off_billeder = mysql_result($result, 0, "nb"); //her hentes 'det
nye felt' nb med resultatet fra count()

> koden virker fint nok når der er et resultat, men når der intet
> resultat er, altså når der ikke er nogle billeder i '$visgalleri'
> med 'tilstan' = 'off', fejler koden.

Jeg tror det har noget med den måde forespørgslen blev udført på. Brug
altid mysql_error() når du har problemer med en sql sætning.

>
> Er der nogen der kan hjælpe med at finde fejlen eller omskrive
> mysql delen.

Prøv ovenstående. Vend tilbage med den fejlmelding mysql giver dig, hvis
det stadig ikke virker.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Mikkel Jakobsen (21-09-2007)
Kommentar
Fra : Mikkel Jakobsen


Dato : 21-09-07 17:39

Hey Dan..

Tak for din pæne og udførlige beskrivelse, det hjalp, Tak.

> Din kode er lidt rodet og skaber ikke et nemt overblik. Prøv at dele den
> op således:
>
> $sql = "SELECT COUNT(*) as nb FROM billeder WHERE tilstand='off' and
> Galleri_id='".$visgalleri."'":
> $result = mysql_query($sql) or die(mysql_error());
> $antal_off_billeder = mysql_result($result, 0, "nb");
>

Virker Perfekt, uden fejl.....


> $antal_off_billeder = mysql_result($result, 0, "nb"); //her hentes 'det
> nye felt' nb med resultatet fra count()
>

Jeg kan godt se hvad der sker...
men jeg tror ikke helt jeg forstår det...
(men det er jo heller ikke alt men skal forstå)

>
> Brug altid mysql_error() når du har problemer med en sql sætning.

Jeg kan godt se hvad du mener, det vil jeg gøre i fremtiden.

Mikkel

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

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

Månedens bedste
Årets bedste
Sidste års bedste