login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Mysql_fetch

Offline Simax - 06/10/2006 08:52
Avatar van SimaxOnbekend Beste mensen,

Ik begin het principe van Mysql een beetje te begrijpe. Een ding zit mij nog dwars. Wat is nou het verschil tussen: mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_object() en mysql_fetch_row()?

Graag iemand die mij uit kan leggen wat het verschil is en wanneer ik wat moet gebruiken?

Alvast bedankt :-).

MvG,
Generix

13 antwoorden

Gesponsorde links
Offline Rens - 06/10/2006 09:10
Avatar van Rens Gouden medaille

Crew algemeen
Het verschil tussen array en assoc is (dacht ik) de snelheid, assoc is sneller (het snelste van allemaal).
Bij object word het iets anders, dan word het meer richting OOP.
Je gebruikt de variabele namelijk op de volgende manier:
$oVar->veldnaam

Bij row word het nog anders, gebruik jij de numerieke waarde van je array.
Dus voor het 1e veld gebruik je 0 (je begint met arrays altijd op 0 met tellen).
Voor het 2e veld gebruik je 1 enz.

Bij mysql_fetch_array kan dit ook, maar als je daar een numerieke index wilt gebruiken, moet je een optionele parameter meegeven aan de functie.

Meer informatie op PHP.net.
PHP.net: mysql_fetch_assoc
PHP.net: mysql_fetch_array
PHP.net: mysql_fetch_object
PHP.net: mysql_fetch_row
Offline Simax - 06/10/2006 09:17
Avatar van Simax Onbekend Welke word het meest gebruikt?
Offline Rens - 06/10/2006 09:20
Avatar van Rens Gouden medaille

Crew algemeen
Dat verschilt per scripter, welke je het fijnste vind...
Ik gebruik altijd mysql_fetch_assoc...
Offline Simax - 06/10/2006 09:50
Avatar van Simax Onbekend Ok .

Het is dus niet zo dat er verschillen zijn qua uitkomst?
Offline marten - 06/10/2006 09:51
Avatar van marten Beheerder je uitkomst is altijd een waarde uit je database tabel mag ik hopen 
Offline Simax - 06/10/2006 09:54
Avatar van Simax Onbekend Ok.

Bedankt voor de hulp .

MvG,
Generix
Offline b4nkr0bz0r - 06/10/2006 10:23
Avatar van b4nkr0bz0r PHP gevorderde Nou, ik ga ook voor assoc, maar als je results (resultaten) nog wil bewerken, vindt ik de array erg handig, vooral omdat je er goed mee kan soorteren met array_multisort();
Offline Thomas - 06/10/2006 11:54
Avatar van Thomas Moderator Voor dit soort vragen bestaat het overzicht...
Offline Wijnand - 06/10/2006 12:16
Avatar van Wijnand Moderator Ik gebruik een database class en die gebruikt (net als waar ik voorheen altijd mee werkte) mysql_fetch_array. Ik vind deze heel fijn werken, fijner dan object en row.

Het verschil is volgens mij enkel en alleen dat mysql_fetch_array nog 3 verschillende argumenten aankan. MYSQL_ASSOC, MYSQL_NUM, en MYSQL_BOTH.
Offline Thomas - 06/10/2006 12:33
Avatar van Thomas Moderator Ik zou sowieso een functie om een mysql_fetch-functie heen schrijven waarin je foutafhandeling stopt en waarin je het query-resultaat in een array stopt, het resultaat meteen vrijgeeft en dit array retourneert (al dan niet met numerieke (fetch_row) of associatieve (fetch_assoc) indices).
Offline Simax - 06/10/2006 14:02
Avatar van Simax Onbekend Je bedoelt msql_error()?
Offline marten - 06/10/2006 14:08
Avatar van marten Beheerder mysql_error of msql_error kan je daarin gebruiken ja maar dat is niet wat Thomas precies bedoelt 
Offline Thomas - 06/10/2006 14:24 (laatste wijziging 06/10/2006 14:28)
Avatar van Thomas Moderator Normaal doe je zoiets:
  1. <?php
  2. $query = "SELECT * FROM whereever WHERE whatever";
  3. $result = mysql_query($query) or die(mysql_error());
  4.  
  5. if(mysql_num_rows($result) > 0)
  6. {
  7. while($row = mysql_fetch_assoc($result))
  8. {
  9. // doe iets met $row
  10. }
  11. }
  12. ?>


Maar deze riedel kun je inkorten als je voor deze zooi een functie schrijft - daar kun je dan tevens foutafhandeling in verwerken.

  1. <?php
  2. function query($query, $fetch="assoc")
  3. {
  4. $die = false; // stoppen bij fout?
  5. $log = false; // fout loggen?
  6. $redirect = false; // doorsturen naar andere pagina bij fout?
  7.  
  8. $ret = array();
  9. $res = @mysql_query($query); // voer query uit - onderdruk fouten
  10.  
  11. // fouten?
  12. if(mysql_error() != "")
  13. {
  14. // error handling
  15. $err = array();
  16. $err[] = mysql_errno(); // 999-1175
  17. $err[] = htmlentities(mysql_error()); // possible javascript inserts
  18. $err[] = htmlentities($query, ENT_QUOTES); // for readability
  19.  
  20. // die?
  21. if($die)
  22. {
  23. die("<pre>".print_r($err, 1)."</pre>");
  24. }
  25.  
  26. // log?
  27. if($log)
  28. {
  29. // handel log af
  30. // gebruik mysql_errno(), mysql_error(), $query
  31. }
  32.  
  33. // relocate?
  34. if($redirect)
  35. {
  36. // redirect hier evt. naar een
  37. // pagina met een nette foutmelding
  38. }
  39. }
  40. else
  41. {
  42. // hier zou je statistieken van queries bij kunnen houden
  43. // zoals het tellen van correct uitgevoerde queries
  44.  
  45. // any results?
  46. if(mysql_num_rows($res))
  47. {
  48. // fetch results
  49. switch($fetch)
  50. {
  51. // fetch row
  52. case "row":
  53. while($row = mysql_fetch_row($res)) $ret[] = $row;
  54. break;
  55. // fetch assoc - is also default
  56. case "assoc":
  57. default:
  58. while($row = mysql_fetch_assoc($res)) $ret[] = $row;
  59. }
  60.  
  61. // free results
  62. }
  63. }
  64.  
  65. // return results
  66. return $ret;
  67. }
  68. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.202s