/ 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
[NEWBIE] Problemer med while
Fra : Jesper Nielsen


Dato : 25-04-07 18:55

Hejsa,

Jeg har efter længere tids overvejelser besluttet mig for, at bevæge mig
væk fra Microsofts .Net platform og over på PHP/MySQL, og er løbet ind i
lidt problemer med en while løkke ifm. at hente data fra en MySQL database.

Min kode er følgende:

<?php
require("paths.php");

function getData($Qry) {
require(CFG_DB);

$dbc = mysql_connect($db_host, $db_user, $db_pass) or die("MySQL
server unreachable.");
$db = mysql_select_db($db_name, $dbc) or die("Could not select MySQL
database.");

$res = mysql_query($Qry);

mysql_close($dbc);

return $res;
}

while($row = mysql_fetch_array(getData("SELECT id,f_name,l_name FROM
people"),MYSQL_ASSOC)) {
print("ID: ".$row{'id'}."; Name: ".$row{'f_name'}."
".$row{'l_name'}."<br />");
}
?>

Scriptet får fint fat i min MySQL server, og der returneres også data.
Problemet er bare, at den kun henter første record - og denne outputtes
et uendeligt antal gange. Der må altså være en uendelig løkke, som jeg
ikke helt kan finde.

Koden virkede fint, før jeg besluttede mig for at få al databasekoden
ind i en function.

Er her nogen, som kan se hvad det er jeg gør galt?


--
Mvh. Jesper

 
 
Finn Stampe Mikkelse~ (25-04-2007)
Kommentar
Fra : Finn Stampe Mikkelse~


Dato : 25-04-07 19:11

"Jesper Nielsen" <jn@nielsenit.invalid> skrev i meddelelsen
news:462f95d9$0$90262$14726298@news.sunsite.dk...
> Hejsa,
>
> Koden virkede fint, før jeg besluttede mig for at få al databasekoden ind
> i en function.
>
> Er her nogen, som kan se hvad det er jeg gør galt?
>
>
> --
> Mvh. Jesper


Hej Jesper

Fjern dit getData kald fra din while.

mysql_query'en returnerer alle rows i databasen i $res, hvorfra
mysql_fetch_array henter dem row for row, indtil den når enden og returnerer
false...

Som du har sat den op, henter du hele tiden alle rows påny fra databasen og
derfor møder du konstant den første row og aldrig enden. En uendelig løkke,
der kun udskriver samme resultat...


==============================
// Udfør database operationen og få alle rows tilbage i $result
$result = getData("SELECT id,f_name,l_name FROM people");

// udfør While-Loop sålænge der er data i $result
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
print("ID: ".$row{'id'}."; Name: ".$row{'f_name'}."
".$row{'l_name'}."<br />");
}
==============================

Ovenstående burde løse dit problem...

Mvh

Finn
++++


Jesper Nielsen (25-04-2007)
Kommentar
Fra : Jesper Nielsen


Dato : 25-04-07 19:19

> Fjern dit getData kald fra din while.

Ah, ja - selvfølgelig.

Mange tak til jer begge


--
Mvh. Jesper

Geert Lund (25-04-2007)
Kommentar
Fra : Geert Lund


Dato : 25-04-07 19:21

Jesper Nielsen wrote:

> while($row = mysql_fetch_array(getData("SELECT id,f_name,l_name FROM
> people"),MYSQL_ASSOC)) {
> print("ID: ".$row{'id'}."; Name: ".$row{'f_name'}."
> ".$row{'l_name'}."<br />");
> }

> Scriptet får fint fat i min MySQL server, og der returneres også data.
> Problemet er bare, at den kun henter første record - og denne outputtes
> et uendeligt antal gange. Der må altså være en uendelig løkke, som jeg
> ikke helt kan finde.

Jae... hvis du kigger lidt på ovenstående while lykke - vil den jo være
sand hele tiden og køre konstant, da du jo hele tiden checker på dit
while statement på den samme SQL forespørgsel...

Du spørger altså databasen efter et result-set i hver while statement -
og dvs. du får første record ud hele tiden - samtidig med dit
while-statement er sandt - og dermed kører i loop.

$result = getData("SELECT id,f_name,l_name FROM people");

while($row = mysql_fetch_array( $result,MYSQL_ASSOC)) {
print("ID: ".$row{'id'}."; Name: ".$row{'f_name'}."
".$row{'l_name'}."<br />");
}

Burde gøre det for dig...

--
Med venlig hilsen
Geert Lund,
www.GLD.dk

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

Månedens bedste
Årets bedste
Sidste års bedste