|
| [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
| |
|
|