Avatar billede frigsfrogs Nybegynder
01. december 2003 - 23:34 Der er 27 kommentarer

Genbruge MySQL result-set?

Hejsa. Er det muligt at genbruge et MySQL resultset? Synes nemlig ikke helt jeg ka få det til at du som jeg vil.

eksempel:

$result = mysql_query("select * from person");

while ($row = mysql_fetch_array($result)) {
  if ($row['koen'] == "mand") {
    print "juhuu en mand";
  }
}

while ($row = mysql_fetch_array($result)) {
  if ($row['koen'] == "kvinde") {
    print "mums en kvinde";
  }
}

jeg ved godt det er et spasser eksempel men selve ideen synes jeg kommer frem med at køre "while ($row = mysql_fetch_array($result))" 2 gange

eller er det muligt at lave en:

$result = mysql_query("select * from person");
$row = mysql_fetch_array($result);

while ($row) {
  blabla
}

eller hva? det kan jeg nemlig heller ik få til at virke.

håber nogen kan hjælpe mig da jeg er pænt ude at skide. problemet er nemlig at jeg har en side på min hjemmeside som connecter 4 gange til min database. kører jeg den localhost virker det 100% men kører jeg over nettet så vil den lige pludselig ikke mere. hvis jeg fjerner de 3 af forespørgslerne så der kun er 1 så virker det. har i evt et svar på det os?

mvh Carsten
Avatar billede frigsfrogs Nybegynder
01. december 2003 - 23:36 #1
ska lige siges at jeg ikke connecter til databasen 4 gange... jeg laver 4 forespørgsler til tabellerne (lidt forskel ;))
Avatar billede ztyxx Nybegynder
01. december 2003 - 23:41 #2
hvis det er samme forespørgsel, kan du jo bare "omklamre" resten af din kode med den

$result = mysql_query("select * from person");
$row = mysql_fetch_array($result);

while ($row) {
  //al den kode der skal bruge resultatet her

}
Avatar billede googolplex Novice
01. december 2003 - 23:43 #3
Når du kører:

while ($row = mysql_fetch_array($result)) {
  if ($row['koen'] == "mand") {
    print "juhuu en mand";
  }
}


Så ligger alle resultaterne jo i et array (row), så kan du bare køre igennem det en gang til med foreach() eller lignende :)
Avatar billede frigsfrogs Nybegynder
01. december 2003 - 23:56 #4
min maskine koger totalt op hvis jeg skriver:

$row = mysql_fetch_array($result);
while ($row) {
  blabla
}

hvordan fungerer den der foreach() lige? for den siger noget med at min ) ikke skal være der *?*
Avatar billede detox Nybegynder
02. december 2003 - 00:11 #5
Fx:

while ($data = mysql_fetch_assoc($result)) {
    $rows[] = $data;
}
// Nu ligger alle data fra din forespørgsel i array'et: $rows[række][felt]
//Det kan udskrives således:
$i = 0;
foreach ($rows as $row) {
  $i++:
  echo "Række: " . $i . "<br />";
  foreach ($row as $felt => $var) {
    echo $felt . " indeholder: " . $var . "<br />";
  }
  echo "<br />";
}
Avatar billede detox Nybegynder
02. december 2003 - 00:13 #6
$i++:
skal være:
$i++;
Avatar billede frigsfrogs Nybegynder
02. december 2003 - 00:14 #7
øøøøøøøøøøh? er 100% sikker på det burde ku gøres lettere for jeg blev lige pludselig 2339034 gange mere forvirret *G*
Avatar billede erikjacobsen Ekspert
02. december 2003 - 00:17 #8
Du kan måske

$result = mysql_query("select * from person");

while ($row = mysql_fetch_array($result)) {
  if ($row['koen'] == "mand") {
    print "juhuu en mand";
  }
}
mysql_data_seek($result,0);
while ($row = mysql_fetch_array($result)) {
  if ($row['koen'] == "kvinde") {
    print "mums en kvinde";
  }
}
Avatar billede detox Nybegynder
02. december 2003 - 00:21 #9
Tja, det var jo ikke min mening at forvirre dig. Jeg fandt osse:
mysql_data_seek($result,0);
frem, men der kom erikj mig i forkøbet.
Nu var det osse mere fordi du spurgte omkring foreach().
Avatar billede frigsfrogs Nybegynder
02. december 2003 - 00:34 #10
damn! har absolut ingen anelse om hva mysql_data_seek gør (hint til at i forklarer ;) ) men det kom sku til at virke med det :) takker mange gange. men hvordan kan det være at siden ikke bliver vist over nettet hvis man laver 4 forespørgsler?

erik smider du lige et svar så får du point.
Avatar billede detox Nybegynder
02. december 2003 - 00:39 #11
mysql_data_seek($result,0);
'Spoler' populært sagt din result ressource tilbage til den første række.
Avatar billede detox Nybegynder
02. december 2003 - 00:40 #12
PS: 0 er den første række.
Avatar billede frigsfrogs Nybegynder
02. december 2003 - 00:41 #13
IIIIIH! undskyld min arrigskab men nu flejner jeg satmer snart! nu virker det nogle gange og andre gange virker det ikke.

som det er nu kører jeg min result-set (som er på 26 rækker) igennem 4 gange. det kan da ik være det der er gal?
Avatar billede erikjacobsen Ekspert
02. december 2003 - 00:41 #14
Hvad sker der hvis du laver 4 forespørgsler?
Avatar billede erikjacobsen Ekspert
02. december 2003 - 00:43 #15
Jeg gider ikke hjælpe dig med det sprog du lægger for dagen
Avatar billede frigsfrogs Nybegynder
02. december 2003 - 00:43 #16
så siger den at den ikke kan finde siden. det samme gør den nogle gange nu. jeg laver kun EEN forespørgsel nu og bruger så det samme result-set 4 gange.
Avatar billede frigsfrogs Nybegynder
02. december 2003 - 00:44 #17
undskyld :( skal nok lige skrive relevant i stedet for det pjat. min fejl.
Avatar billede frigsfrogs Nybegynder
02. december 2003 - 00:48 #18
ved ikke om der er noget med mysql at man ikke må lave forespørgsler så hurtigt efter hinanden? kan det være en mulighed eller skyder jeg helt forbi nu?
Avatar billede detox Nybegynder
02. december 2003 - 01:23 #19
Måske du kunne prøve at paste den nøjagtige fejlmeddelelse?
Avatar billede frigsfrogs Nybegynder
02. december 2003 - 12:17 #20
Siden kan ikke vises
Den side, du søger efter, er ikke tilgængelig. Der kan være tekniske problemer på webstedet, eller det kan være nødvendigt at ændre webbrowserindstillingerne.
osv.

den side vises nogle gange og andre gange vises det rigtige.
Avatar billede detox Nybegynder
02. december 2003 - 12:34 #21
Det lyder ikke som om det har noget med scriptet at gøre. Særligt ikke når det er periodisk, så lyder mere som serveren der driller. Du burde kunne klare dig med en forespørgsel og så bruge: mysql_data_seek($result,0); imellem hver løkke.
Måske kunne du lave strukturen lidt smartere, så du ikke behøver at køre flere løkker.
Avatar billede frigsfrogs Nybegynder
02. december 2003 - 15:36 #22
det har jeg prøvet men synes ikke rigtig jeg kunne finde hoved og hale i det og det kom ikke til at virke overhovedet så jeg droppede det igen.
Avatar billede detox Nybegynder
02. december 2003 - 18:24 #23
Med de eksempler du har vist, kunne du gøre det meget enkelt:

while ($data = mysql_fetch_assoc($result)) {
    $rows[] = $data['koen'];
}
if (in_array("mand", $row)) echo "juhuu en mand";
if (in_array("kvinde", $row)) echo "mums en kvinde";
Avatar billede detox Nybegynder
02. december 2003 - 18:25 #24
Sorry sådan:

while ($data = mysql_fetch_assoc($result)) {
    $rows[] = $data['koen'];
}
if (in_array("mand", $row)) echo "juhuu en mand";
if (in_array("kvinde", $row)) echo "mums en kvinde";
Avatar billede detox Nybegynder
02. december 2003 - 18:25 #25
He he, ved ikke lige hvad der sker:

while ($data = mysql_fetch_assoc($result)) {
    $rows[] = $data['koen'];
}
if (in_array("mand", $rows)) echo "juhuu en mand";
if (in_array("kvinde", $rows)) echo "mums en kvinde";
Avatar billede ztyxx Nybegynder
19. december 2003 - 16:36 #26
lukketid?
Avatar billede frigsfrogs Nybegynder
21. december 2003 - 20:27 #27
venter bare på eric jakobsen lægger et svar
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