webForumDet fria alternativet

Hantera svar från SQL-fråga

6 svar · 228 visningar · startad av Gein

GeinMedlem sedan sep. 20005 700 inlägg
#1
<?php
$query = "SELECT hole, hcp FROM golf_bana_scoreboard WHERE id = ".$_POST['course']." ORDER BY hcp ASC";
$result = mysql_query($query, $link)
	OR DIE("Fel i queryn: <br />".$query);
while($array = mysql_fetch_array($result))
{
	foreach($array as $item){
		echo $item."<br>";
	}
}	
?>

Denna kod skriver ut dubbel upplaga av varje fält. Varför gör den det?
Det är två kolumner och 18 rader.
Om jag kikar i t.ex. MySQL-front va svaret skulle ge mej ser det ut ungefär såhär:

hole		hcp
4		1
15		2
5		3
... osv

Men php-koden spottar ut följande:

4
4
1
1
15
15
2
2
5
5
3
3
... osv

Varför kör den ut dubbel upplaga av svaret?

GeinMedlem sedan sep. 20005 700 inlägg
#2

Aha, så här ser den tydligen ut:

Key: 0; Value: 4
Key: hole; Value: 4
Key: 1; Value: 1
Key: hcp; Value: 1
Key: 0; Value: 15
Key: hole; Value: 15
Key: 1; Value: 2
Key: hcp; Value: 2
Key: 0; Value: 5
Key: hole; Value: 5
Key: 1; Value: 3
Key: hcp; Value: 3

Det förklarar saken.
Hur gör man för att skippa att lagra svaret i arrayen med fält-namn? Är enbart intresserad av nuffrorna

PeeerMedlem sedan mars 20025 907 inlägg
#3

Re: Hantera svar från SQL-fråga

<?php
$query = "SELECT hole, hcp FROM golf_bana_scoreboard WHERE id = ".$_POST['course']." ORDER BY hcp ASC";
$result = mysql_query($query, $link)
	OR DIE("Fel i queryn: <br />".$query);
while($array = mysql_fetch_array($result))
{
	echo $array["hole"] . " - " . $array["hcp"] ."<br>";
}	
?>

Kan du inte göra något sådant här då? Eller blir det fortfarande dubbelt då?

GeinMedlem sedan sep. 20005 700 inlägg
#4

Jag förklarade nog lite dåligt tror jag. Men jag löste iaf mitt problem genom att kasta över alla värden i en ny array.

MatteMedlem sedan aug. 20002 975 inlägg
#5

mysql_fetch_assoc() hämtar en array med strängindex (associativ).
mysql_fetch_row() hämtar en numrerad array.

mysql_fetch_array() hämtar med både associativa och numeriska index. Du får med andra ord två av varje värde.

Använd någon av de två översta.

GeinMedlem sedan sep. 20005 700 inlägg
#6

Där har vi det jag sökte :)
mysql_fetch_row() va det givetvis. Tack

MungoMedlem sedan jan. 2000372 inlägg
#7

Ja, eller mysql_fetch_array($result, MYSQL_NUM) :)

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)