Avatar billede keet Nybegynder
30. august 2003 - 00:23 Der er 7 kommentarer og
1 løsning

return mysql_fetch_array

jeg har følgende kode der giver problemer:

function getRange()
{
  $sql = mysql_query("sql..");
  return mysql_fetch_array($sql);
}

while ( $row = getRange() ) {
  ...
}

Hvorfor vil PHP ikke acceptere at jeg bruger getRange() i min while-løkke: $row = getRange()?
Hvis jeg bruger nøjagtig samme kode og sætter den ind på følge måde virker det fint:

$sql = mysql_query("sql..");
while ( $row = mysql_fetch_array($sql) ) {
  ...
}

Burde det ikke være det samme?
Avatar billede tipsen Nybegynder
30. august 2003 - 00:30 #1
nej - fordi i din funktion udfører du jo selve sql-sætningen - dvs. den vil blive udført i al uendelighed... - igen og igen og igen...
Avatar billede keet Nybegynder
30. august 2003 - 00:34 #2
Findes der så en anden løsning? Jeg bruger nemlig samme sql-sætning mange gange. Ville det nemmeste så bare være at have en global variable?
fx:
$global_sql = mysql_query("...");

fucntion bla()
{
  global $global_sql;
}
Avatar billede keet Nybegynder
30. august 2003 - 00:35 #3
Eller kunne jeg bare lade getRange retunere: return mysql_query("..");
Avatar billede erikjacobsen Ekspert
30. august 2003 - 09:13 #4
Kan du ikke give et par eksempler på hvordan du bruger det. Så kan vi vel
finde på noget smart.
Avatar billede tipsen Nybegynder
30. august 2003 - 10:14 #5
Jeg bruger slet ikke sådan noget...
Avatar billede tipsen Nybegynder
30. august 2003 - 10:18 #6
Måske noget i retning af følgende (ej særlig optimalt):

function getRange($sql)
{
  //db-connection
  $res = mysql_query($sql) or return(mysql_error());
  for($i=0;$i<mysql_num_rows($res);$i++) {
      $rows[] = mysql_fetch_array($res));
  }
  return $rows;
}

$sql = "SELECT...";
$dbarray = getRange($sql);
Avatar billede martinbk Nybegynder
31. august 2003 - 05:42 #7
eller noget i den her stil:


function db_result_to_array($result)
{
  $res_array = array();
  for ($count=0;$row=mysql_fetch_array($result);$count++)
  {
    $res_array[$count] = $row;
  }
  return $res_array;
}
Avatar billede keet Nybegynder
01. september 2003 - 14:02 #8
Tipsen: jeg godkender dit svar. Det var fordi jeg retunerede med mysql_fetch_array() og det kan jeg egentlig godt se at man ikke kan. tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester