Avatar billede netro Nybegynder
16. september 2005 - 13:39 Der er 20 kommentarer og
1 løsning

Udtrække recordset til array

Jeg har aldrig arbejdet med PHP før, og har derfor lige et spørgsmål. Kan I give et eksempel på, hvordan jeg udtrækker alt data fra et recordset til et to-dimensionelt array og herefter løber dette i gennem og udskriver alt i det?

$res = mysql_query('Select Felt1, Felt2 From Tabel');
...
Avatar billede hmortensen Nybegynder
16. september 2005 - 13:40 #1
$sql = mysq_query("SELECT f1, f2 FROM tabel");

while ($data = mysql_fetch_array($sql))
{
  echo $data['f1']." ".$data['f2'];
}
Avatar billede erikjacobsen Ekspert
16. september 2005 - 13:41 #2
$sql = mysq_query("SELECT f1, f2 FROM tabel");
$a = Array();
while ($data = mysql_fetch_array($sql)) {
  $a[]=$data;
}
Avatar billede netro Nybegynder
16. september 2005 - 13:42 #3
Eller måske endnu bedre - hvordan jeg i stedet kan løbe recordsættet i gennem og derefter flytte cursoren til starten af det.
Avatar billede erikjacobsen Ekspert
16. september 2005 - 13:45 #4
Det kan du nok med http://php.net/mysql_data_seek
Avatar billede netro Nybegynder
16. september 2005 - 13:46 #5
SQL-sætningen eksekveres med mysq_query(""), så jeg får recordsættet i $sql, ik'?
Avatar billede erikjacobsen Ekspert
16. september 2005 - 13:49 #6
jo. Hvis man ellers staver "mysql" rigtigt ;)
Avatar billede netro Nybegynder
16. september 2005 - 13:50 #7
Nå ja ;)

Jeg går i krig med det. Tak.
Avatar billede netro Nybegynder
16. september 2005 - 14:24 #8
Der bliver ikke udskrevet så meget:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\wamp\www\default.php on line 56
Avatar billede hmortensen Nybegynder
16. september 2005 - 14:26 #9
Så kan du sætte en or die() på efter din query for at se om der er sql fejl:
$sql = mysq_query("SELECT f1, f2 FROM tabel") or die(mysql_error());
Avatar billede netro Nybegynder
16. september 2005 - 14:31 #10
Den kunne ikke finde tabellen, men det fungerer nu!
Avatar billede netro Nybegynder
16. september 2005 - 15:01 #11
Jeg kan dog ikke finde ud af at løbe recordsættet i gennem flere gange. Dvs.:

while ($data = mysql_fetch_array($sql))
  echo $data['f1']." ".$data['f2'];

while ($data = mysql_fetch_array($sql))
  echo $data['f1']." ".$data['f2'];
Avatar billede erikjacobsen Ekspert
16. september 2005 - 15:09 #12
Avatar billede netro Nybegynder
16. september 2005 - 15:12 #13
Ja, det prøvede jeg, og det går også fint med at udskrive første gennemløb, men det næste udskriver bare tomme værdier.
Avatar billede netro Nybegynder
16. september 2005 - 15:17 #14
I ASP ville jeg bruge MoveFirst, men jeg ved ikke, hvad PHP tilbyder.
Avatar billede hmortensen Nybegynder
16. september 2005 - 21:05 #15
Burde virke sådan her:
$sql = mysq_query("SELECT f1, f2 FROM tabel");

while ($data = mysql_fetch_array($sql))
{
  echo $data['f1']." ".$data['f2'];
}

mysql_data_seek($sql, 0);

while ($data = mysql_fetch_array($sql))
{
  echo $data['f1']." ".$data['f2'];
}
Avatar billede erikjacobsen Ekspert
16. september 2005 - 21:11 #16
Du er nødt til at tjekke om du kan bruge mysql_data_seek - nogle drivere understøtter det, andre ikke. Som der står i mit link: Returns TRUE on success or FALSE on failure.
Avatar billede netro Nybegynder
17. september 2005 - 14:04 #17
Ja, det virker sådan set, men går dog ikke helt alligevel, da jeg skal bruge recordsættet i en rekursiv funktion. Jeg vil gerne undgå at eksekvere SQL-sætningen for hvert funktionskald.

Erik -> Hvordan får jeg fat på de forskellige værdier i dit første array ($a)?
Avatar billede erikjacobsen Ekspert
17. september 2005 - 14:13 #18
Avatar billede netro Nybegynder
17. september 2005 - 14:25 #19
Okay! Jeg fik i mellemtiden løst det med:

for($i=0; $i<count($a); $i++)
Avatar billede netro Nybegynder
17. september 2005 - 16:20 #20
Jeg vil slutte dette spørgsmål.

Tak for hjælpen - læg svar hvis I lyster.
Avatar billede netro Nybegynder
23. april 2006 - 19:18 #21
Ok
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