[PHP/MySQL] Query results uitlezen *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • enveekaa
  • Registratie: September 2003
  • Laatst online: 21-09 06:09
Hoi, als ik de volgende query is PHPMyAdmin uitvoer is er niks aan de hand maar als ik hem probeer te lezen vanuit een script gaat er iets mis, vermoedelijk zit ik met een array foutje.. maar ik kan het niet vinden op het moment.

Deze query is geldig: SELECT COUNT( mmr_ladingnummer ) from loslijst where mmr_ladingnummer=\"79\"";
Die werk feilloos in de PHPMyAdmin... maar in het onderstaande scriptje dus niet, ik krijg de volgende output: "Resource id #4".
Mijn bedoeling is om alle regels te lezen die als "mmr_ladingsnummer" dus nummer 79 hebben.. dat zijn er 141.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
include('database.php');
//$target = "79";
//$hit = "";
    
mysql_connect($db_host, $db_user, $db_password);
$query = "USE scanner";
    
mysql_query($query) or die("FOUT!".mysql_error().__LINE__);
$query = "SELECT COUNT( mmr_ladingnummer ) from loslijst where mmr_ladingnummer=\"79\"";
$result = mysql_query($query) or die("FOUT!".mysql_error().__LINE__);
echo $result;
?>

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 21-09 18:44

gorgi_19

Kruimeltjes zijn weer op :9

SELECT COUNT( mmr_ladingnummer ) AS aantal from loslijst where mmr_ladingnummer=79

En op deze manier? :)

Heb je trouwens ook een suggestie voor een betere titel? :)

[ Voor 23% gewijzigd door gorgi_19 op 29-10-2004 11:21 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Theuno
  • Registratie: Juni 2001
  • Laatst online: 20:37

Theuno

Da Devil Crew

PHP:
1
$result = mysql_query($query) or die("FOUT!".mysql_error().__LINE__);


vervangen voor:

PHP:
1
2
3
$result = mysql_query($query) or die("FOUT!".mysql_error().__LINE__);
$result = mysql_result($result, 0);
echo $result;

[ Voor 30% gewijzigd door Theuno op 29-10-2004 13:31 . Reden: nu correct ]

Theuno - Da Devil Crew - Een programmeur is iemand die koffie omzet in software...
Nu nog betere koffie...


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ehm je print de resource uit naar de results van mysql :o
je moet met bijvoorbeeld een loopje de gegevens opvragen uit die $result:

PHP:
1
2
3
while ($record = mysql_fetch_assoc($result) ){
  print_r($record);
}

Acties:
  • 0 Henk 'm!

Verwijderd

Je probeer nu een resultset af te drukken, dat gaat niet.
Zet de resultset om in een array door middel van:
PHP:
1
2
while ( $array[$counter] = mysql_fetch_assoc( $result ) )
    $counter++;

Dan kun je de inhoud van deze array afdrukken, bijvoorbeeld zo:
PHP:
1
print $array[0];

Acties:
  • 0 Henk 'm!

  • enveekaa
  • Registratie: September 2003
  • Laatst online: 21-09 06:09
Hehe, ja die titel is niet echt specifiek he ;) Dat merkte ik ook na het posten, kan de titel helaas niet meer veranderen..

Maar de output van mijn syntax is wel goed, namelijk 141, maar in PHP krijg ik die niet uit de array.
De output van $result = Resource Id #4

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 29 oktober 2004 @ 11:23:
Je probeer nu een resultset af te drukken, dat gaat niet.
Zet de resultset om in een array door middel van:
PHP:
1
2
while ( $array[$counter] = mysql_fetch_assoc( $result ) )
    $counter++;

Dan kun je de inhoud van deze array afdrukken, bijvoorbeeld zo:
PHP:
1
print $array[0];
offtopic:

kan korter :P
PHP:
1
while ( $array[$counter++] = mysql_fetch_assoc( $result ) );

:+

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 21-09 18:44

gorgi_19

Kruimeltjes zijn weer op :9

enveekaa schreef op 29 oktober 2004 @ 11:24:
Hehe, ja die titel is niet echt specifiek he ;) Dat merkte ik ook na het posten, kan de titel helaas niet meer veranderen..
Ik wel, vandaar het verzoek om even een duidelijke titel neer te zetten. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Theuno
  • Registratie: Juni 2001
  • Laatst online: 20:37

Theuno

Da Devil Crew

enveekaa schreef op 29 oktober 2004 @ 11:24:
Hehe, ja die titel is niet echt specifiek he ;) Dat merkte ik ook na het posten, kan de titel helaas niet meer veranderen..

Maar de output van mijn syntax is wel goed, namelijk 141, maar in PHP krijg ik die niet uit de array.
De output van $result = Resource Id #4
Dat klopt, je voert je query uit, maar je verwert je data nog niet. Als je er mysql_result() op los laat krijg je het resultaat van de query !
Hiervoor zijn nog meer functies, maar bij maar 1 return waarde is result het makkelijkst vind ik.

Theuno - Da Devil Crew - Een programmeur is iemand die koffie omzet in software...
Nu nog betere koffie...


Acties:
  • 0 Henk 'm!

  • enveekaa
  • Registratie: September 2003
  • Laatst online: 21-09 06:09
Ik wel, vandaar het verzoek om even een duidelijke titel neer te zetten.
Ok :) euhmm.. ; [PHP/MySQL] Query results uitlezen.

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 21-09 17:49

ripexx

bibs

Als eerste zou ik eens een database selecteren met mysql_select_db($db_naam, $link); en ten tweede kan je intergers zonder quotes in mysql zetten. Verder is het handig om single(') quotes te gebruiken.
PHP:
1
2
$sql = "SELECT * FROM table WHERE id = ".$id.";";
mysql-query($sql);


// Dubbel laat :X Geweldig telefoon tussen door :(

[ Voor 14% gewijzigd door ripexx op 29-10-2004 11:29 ]

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 21-09 19:10

Robtimus

me Robtimus no like you

PHP: MySQL Functions
Staat een heel mooi voorbeeld, gevolgd door alle functies.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

  • enveekaa
  • Registratie: September 2003
  • Laatst online: 21-09 06:09
IceManX: ik ga een kijkje nemen, had het al vluchtig doorgelezen maar hielp me niet verder.

Ik heb nu dit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
include('database.php');
    
mysql_connect($db_host, $db_user, $db_password);
$query = "USE scanner";
    
mysql_query($query) or die("FOUT!".mysql_error().__LINE__);
$query = "SELECT COUNT( mmr_ladingnummer ) from loslijst where mmr_ladingnummer=\"79\"";
$result = mysql_query($query) or die("FOUT!".mysql_error().__LINE__);
while ($regel = mysql_fetch_array($result)) {
    return "$regel[0]";
}
?>

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

enveekaa schreef op 29 oktober 2004 @ 11:39:
IceManX: ik ga een kijkje nemen, had het al vluchtig doorgelezen maar hielp me niet verder.

Ik heb nu dit:

code:
1
    return "$regel[0]";
waarom staan daar quotes omheen 8)7

Acties:
  • 0 Henk 'm!

  • enveekaa
  • Registratie: September 2003
  • Laatst online: 21-09 06:09
Om te kijken of het misschien daar aan lag, niet dus.. maar in principe maakt het niet uit of er nou wel of geen quotes om geen staan. ... Anyway.. het werkt niet :) wel of egeen quotes.

Update:

Oh ik zie het "AL" ipv return moet ik echo gebruiken, ik had deze routine uit een functie gehaald en er stond dus return $regel[0]; moet echo $regel[0]; zijn..

Bedankt voor de reacties jongens! :)

[ Voor 37% gewijzigd door enveekaa op 29-10-2004 11:44 ]


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 21-09 19:10

Robtimus

me Robtimus no like you

Eigenlijk moet je er nog de database kiezen en ff opruimen:
PHP:
1
2
3
4
5
$link = mysql_connect(....);
mysql_select_db("...", $link);
....
mysql_free_result($result);
mysql_close($link);
Verder kun je nog even spelen met myqsl_fetch_array, myqsl_fetch_assoc, myqsl_fetch_object en myqsl_fetch_row

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

Verwijderd

enveekaa schreef op 29 oktober 2004 @ 11:43:
Om te kijken of het misschien daar aan lag, niet dus.. maar in principe maakt het niet uit of er nou wel of geen quotes om geen staan. ... Anyway.. het werkt niet :) wel of egeen quotes.
Je zou, in principe, het door Erkens gequotte stukje kunnen weglaten en na de lus dit neer kunnen zetten:
PHP:
1
print_r( $regel );

Aangezien je volgens mij $regel wil afdrukken.
Of denk ik nu te simpel :? Niet dus, succes verder d'rmee, he!

[ Voor 8% gewijzigd door Verwijderd op 29-10-2004 11:47 ]


Acties:
  • 0 Henk 'm!

  • enveekaa
  • Registratie: September 2003
  • Laatst online: 21-09 06:09
Dit is dus de uiteindelijk werkende code..
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
include('database.php');
    
mysql_connect($db_host, $db_user, $db_password);
$query = "USE scanner";
    
mysql_query($query) or die("FOUT!".mysql_error().__LINE__);
$query = "SELECT COUNT( mmr_ladingnummer ) from loslijst where mmr_ladingnummer=\"79\"";
$result = mysql_query($query) or die("FOUT!".mysql_error().__LINE__);
while ($regel = mysql_fetch_array($result)) {
    echo $regel[0];
}
?>

Acties:
  • 0 Henk 'm!

Verwijderd

enveekaa schreef op 29 oktober 2004 @ 11:48:
Dit is dus de uiteindelijk werkende code..
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
include('database.php');
    
mysql_connect($db_host, $db_user, $db_password);
$query = "USE scanner";
    
mysql_query($query) or die("FOUT!".mysql_error().__LINE__);
$query = "SELECT COUNT( mmr_ladingnummer ) from loslijst where mmr_ladingnummer=\"79\"";
$result = mysql_query($query) or die("FOUT!".mysql_error().__LINE__);
while ($regel = mysql_fetch_array($result)) {
    echo $regel[0];
}
?>
Dit gaat wel fout als je meer data uit je database wil trekken, omdat je nu per resultaat steeds de eerste ($regel[0]) afdrukt. Ik zou me, als ik jou was, verdiepen in het linkje gegeven door IceManX om teleurstelling in de toekomst tegen te gaan.

[ Voor 6% gewijzigd door Verwijderd op 29-10-2004 11:55 ]


Acties:
  • 0 Henk 'm!

  • Theuno
  • Registratie: Juni 2001
  • Laatst online: 20:37

Theuno

Da Devil Crew

Ik snap de truuc nu niet helemaal, je krijgt 1 result terug, en jij gaat daar een heel array voor fetchen. Niet erg efficient...

Dat geld inderdaad ook voor de rest van de code, maar daar zijn al genoeg comments voor gegeven.

Theuno - Da Devil Crew - Een programmeur is iemand die koffie omzet in software...
Nu nog betere koffie...


Acties:
  • 0 Henk 'm!

  • enveekaa
  • Registratie: September 2003
  • Laatst online: 21-09 06:09
Ja daar heb je wel gelijk in, ben eigenlijk alleen gewend met deze manier van uitlezen te werken. In dit geval hoeft het inderdaad niet in een array te komen, aangezien het maar 1 waarde is :) Heb je een suggestie voor een andere manier?

Acties:
  • 0 Henk 'm!

  • Theuno
  • Registratie: Juni 2001
  • Laatst online: 20:37

Theuno

Da Devil Crew

Zie: [rml]Theuno in "[ PHP/MySQL] Query results uitlezen *"[/rml] (2e reply in dit topic)

Net even geprobeerd, en dit werkt idd perfect.

Theuno - Da Devil Crew - Een programmeur is iemand die koffie omzet in software...
Nu nog betere koffie...

Pagina: 1