/ 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 begynder] Problem med fetch_row...
Fra : Mads Pedersen


Dato : 06-02-01 00:45

OK, det er helt sikkert et temmeligt banalt problem. Men kan nogen forklare
mig hvorfor dette IKKE virker:

$result = mysql_query("SELECT * FROM brugere", $db);
while ($myrow = mysql_fetch_row($result)); {
printf ("Navn: $myrow[1] $myrow[2]\n");
}

.... mens det her fungerer fint:

$result = mysql_query("SELECT * FROM brugere", $db);
$myrow = mysql_fetch_row($result);
printf ("$myrow[1], $myrow[2], $myrow[3], $myrow[4]");


vh,

// Mads


 
 
Johan (06-02-2001)
Kommentar
Fra : Johan


Dato : 06-02-01 01:54

> $result = mysql_query("SELECT * FROM brugere", $db);
> while ($myrow = mysql_fetch_row($result)); {
> printf ("Navn: $myrow[1] $myrow[2]\n");
> }
>
Fordi skal skrive:

print("Navn: ".$myrow[1].$row[2]."\n");


> ... mens det her fungerer fint:
>
> $result = mysql_query("SELECT * FROM brugere", $db);
> $myrow = mysql_fetch_row($result);
> printf ("$myrow[1], $myrow[2], $myrow[3], $myrow[4]");

Denne er også rent teknisk forkert! Men PHP fortolker den anyway fordi den
er flink ved dig Du BURDE istedet skrive variabler udenfor
anførselstegnene!

Iøvrigt ser jeg slet ingen grund til du bruger printf() funktionen?!? Du
udnytter ikke de ting den kan i forhold til echo() eller print() så hvorfor
ikke bare bruge en af de 2?!

mvh

Johan Holst Nielsen



Jonas Koch Bentzen (06-02-2001)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 06-02-01 09:24

Johan skrev:

> Fordi skal skrive:
>
> print("Navn: ".$myrow[1].$row[2]."\n");

Det gør ingen forskel. Det er ikke dér, problemet ligger.

> Du BURDE istedet skrive variabler udenfor
> anførselstegnene!

Gu' burde han da ej! : ) Hvorfor tror du, der i PHP er dollartegn foran
variabelnavnene? Netop fordi, de på den måde kan skrives direkte i
strenge. Det er jo netop en af PHPs fordele, så hvorfor ikke udnytte
den?

--
http://jonaskochbentzen.dk/

Mads Pedersen (06-02-2001)
Kommentar
Fra : Mads Pedersen


Dato : 06-02-01 19:17

Tak Kim, Jonas og Johan for jeres mere eller mindre fantasifulde forslag ,-)

Desværre var der ingen af jer som ramte rigtigt. Problemet var MEGET mere
nybegynder-agtigt end dem I foreslog - nemlig det lille semi-colon efter
while betingelsen. Bortset fra det virker koden fint. Pinligt at jeg ikke så
det!!!

while ($myrow = mysql_fetch_row($result)); {
printf ("Navn: $myrow[1] $myrow[2]\n");
}


Forresten Johan, så er jeg godt klar over at den kode jeg citerede ikke
udnyttede printf's funktioner, men i min bughunt prøvede jeg at reducere
kompleksiteten af min kode. Problemet var desværre så grundlæggende stupidt
at det ikke hjalp


// Mads


Anders Johannsen (07-02-2001)
Kommentar
Fra : Anders Johannsen


Dato : 07-02-01 04:43

> Gu' burde han da ej! : ) Hvorfor tror du, der i PHP er dollartegn foran
> variabelnavnene? Netop fordi, de på den måde kan skrives direkte i
> strenge. Det er jo netop en af PHPs fordele, så hvorfor ikke udnytte
> den?

Det må være op til den enkeltes samvittighed, men variabler ala
$flaf['gnyf'] kan ikke umiddelbart indgå i strenge.

/A



Peter Brodersen (07-02-2001)
Kommentar
Fra : Peter Brodersen


Dato : 07-02-01 07:11

On Wed, 07 Feb 2001 03:43:04 GMT, "Anders Johannsen"
<anders@ignition.dk> wrote:

>Det må være op til den enkeltes samvittighed, men variabler ala
>$flaf['gnyf'] kan ikke umiddelbart indgå i strenge.

Det kan $flaf[gnyf] til gengæld.


--
- Pede
Professionel nørd

Johan (07-02-2001)
Kommentar
Fra : Johan


Dato : 07-02-01 10:56

> Gu' burde han da ej! : ) Hvorfor tror du, der i PHP er dollartegn foran
> variabelnavnene? Netop fordi, de på den måde kan skrives direkte i
> strenge. Det er jo netop en af PHPs fordele, så hvorfor ikke udnytte
> den?

Det er så en diskussion! Jeg mener ikke at der er nogen grund til at udnytte
noget. Koden bliver fandens uoverskueligt ved at skrive den inde i
anførselstegnene! Whatever... hvad gør man ikke, når man ikke kan "lide" de
nye og "smarte"!

Jeg skriver dem ALTID undenfor! Det gør kode mere nem at rette i efter min
mening! Hvorfor skal man hoppe over hvor gærdet er lavest?

mvh

Johan



Jonas Koch Bentzen (07-02-2001)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 07-02-01 11:23

Johan skrev:

> Koden bliver fandens uoverskueligt ved at skrive den
> inde i anførselstegnene!

Tja, jeg vil så mene, at det her

echo "<a href='$row[id]' style='$style'>$row[name]</a>";

er meget mere overskueligt end det her:

echo "<a href='".$row[id]."' style='".$style."'>".$row[name]."</a>";

> Jeg skriver dem ALTID undenfor! Det gør kode mere nem at rette i efter
> min mening! Hvorfor skal man hoppe over hvor gærdet er lavest?

At hoppe over hvor gærdet er lavest betyder, at man vælger en dårligere
løsning, fordi man er doven. At skrive variabler inde i strenge er ikke
en dårligere løsning.

--
http://jonaskochbentzen.dk/

Morten (08-02-2001)
Kommentar
Fra : Morten


Dato : 08-02-01 00:32

Hejsa,

Et lille tip: Lad helt være med at anvende "mysql_fetch_row", da du hurtigt
løber ud i problemer med denne funktion hvis du ændrer i tabellen (nye
kolonner eller ændret kolonnerækkefølge).

Gør istedet som følger (med "mysql_fetch_array"):
> $result = mysql_query("SELECT * FROM brugere", $db)
> while ($myrow = mysql_fetch_array($result)); {
> printf ('Navn:'. $myrow["fornavn"] .' '. $myrow["efternavn"] .'\n');
> }

Endvidere er det altid god skik kun at trække de kolonner ud af databasen,
som du har brug for. I ovenstående tilfælde ville dette være "SELECT
fornavn, efternavn FROM brugere".

/Morten



Mads Pedersen <mads@imv.au.dk> wrote in message
news:B6A4F98D.151CC%mads@imv.au.dk...
> OK, det er helt sikkert et temmeligt banalt problem. Men kan nogen
forklare
> mig hvorfor dette IKKE virker:
>
> $result = mysql_query("SELECT * FROM brugere", $db);
> while ($myrow = mysql_fetch_row($result)); {
> printf ("Navn: $myrow[1] $myrow[2]\n");
> }
>
> ... mens det her fungerer fint:
>
> $result = mysql_query("SELECT * FROM brugere", $db);
> $myrow = mysql_fetch_row($result);
> printf ("$myrow[1], $myrow[2], $myrow[3], $myrow[4]");
>
>
> vh,
>
> // Mads
>



Mads Pedersen (08-02-2001)
Kommentar
Fra : Mads Pedersen


Dato : 08-02-01 19:07

in article WUkg6.453$Hr1.25731@news.get2net.dk, Morten at
morten@e-rasmussen_REMOVE_THIS_.dk wrote on 08/02/01 00:32:

> Et lille tip: Lad helt være med at anvende "mysql_fetch_row",

Tak for tippet - det vil jeg prøve!!!!

// Mads


Peter Brodersen (09-02-2001)
Kommentar
Fra : Peter Brodersen


Dato : 09-02-01 03:00

On Thu, 8 Feb 2001 00:32:21 +0100, "Morten"
<morten@e-rasmussen_REMOVE_THIS_.dk> wrote:

>Et lille tip: Lad helt være med at anvende "mysql_fetch_row", da du hurtigt
>løber ud i problemer med denne funktion hvis du ændrer i tabellen (nye
>kolonner eller ændret kolonnerækkefølge).

Rettelse: Lad være med at bruge "SELECT * ...". Dette er en
uskik/dårlig vane, og bliver for alvor et problem, hvis man har meget
data i sin tabel.


--
- Pede
Professionel nørd

Mads Pedersen (09-02-2001)
Kommentar
Fra : Mads Pedersen


Dato : 09-02-01 09:05

in article pnj68t8lf3b8fvca15jkke8s6gdelc60oa@news.worldonline.dk, Peter
Brodersen at professionel@nerd.dk wrote on 09/02/01 03:00:

> Rettelse: Lad være med at bruge "SELECT * ...". Dette er en
> uskik/dårlig vane, og bliver for alvor et problem, hvis man har meget
> data i sin tabel.

Det tænkte jeg nok, men det her er bare testdata. Anyway, tak for tippet man
kan jo ligesågodt få gode få nogle godt vaner banket ind fra starten.

// Mads


Peter Brodersen (09-02-2001)
Kommentar
Fra : Peter Brodersen


Dato : 09-02-01 09:10

On Fri, 09 Feb 2001 09:04:54 +0100, Mads Pedersen <mads@imv.au.dk>
wrote:

>> Rettelse: Lad være med at bruge "SELECT * ...". Dette er en
>> uskik/dårlig vane, og bliver for alvor et problem, hvis man har meget
>> data i sin tabel.
>Det tænkte jeg nok, men det her er bare testdata. Anyway, tak for tippet man
>kan jo ligesågodt få gode få nogle godt vaner banket ind fra starten.

Hep; i langt de fleste tilfælde ved små tabeller vil det ikke ændre på
noget. Og med testdata er det jo næsten ligegyldigt - men når kode
skal i produktion, bør det lige ringe en alarmklokke.


--
- Pede
Professionel nørd

Søg
Reklame
Statistik
Spørgsmål : 177511
Tips : 31968
Nyheder : 719565
Indlæg : 6408591
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste