mysql_fetch_x

Door Pieter van Linschoten, 22 jaar geleden, 8.880x bekeken

Verschil tussen bepaalde manieren van data uit een mysql database in een array te zetten. De functies die behandeld worden zijn: mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_row() en mysql_fetch_object().

Gesponsorde koppelingen

Inhoudsopgave

  1. Waarom deze tutorial?
  2. mysql_fetch_array()
  3. mysql_fetch_assoc()
  4. mysql_fetch_row()
  5. mysql_fetch_object()
  6. Wat moet jij gebruiken?

 

Er zijn 34 reacties op 'Mysqlfetchx'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Pieter van Linschoten
Pieter van Linschoten
22 jaar geleden
 
1 +1 -0 -1
Deze mag blijven...
Han eev
Han eev
22 jaar geleden
 
0 +1 -0 -1
Nog 1 klein foutje, voor de rest mooi :)
Bij mysql_fetch_assoc:
while($aRow = mysql_fetch_assic($qryRes)){
Pieter van Linschoten
Pieter van Linschoten
22 jaar geleden
 
0 +1 -0 -1
hehe... Dit bericht beschouw ik als niet verstuurd han ;)
Mebus  Hackintosh
Mebus Hackintosh
22 jaar geleden
 
0 +1 -0 -1
deze heeft mij weer een stuk wijzer gemaakt! dankje wel lapido!


GR. mebus!
Pieter van Linschoten
Pieter van Linschoten
22 jaar geleden
 
0 +1 -0 -1
Lapido? Wil je me soms beledigen? xD


22 jaar geleden
 
0 +1 -0 -1
_row mag dan wel het snelste zijn om op te vragen ik vraag me af hoe het met de benadering zit.
Dus of dit $aRow['id'] ook sneller is als $aRow->id
Iemand zin om te testen.

In mysql_fetch_object even dt bij goet foud omdraaien, het staat zo lomp (al heb je het denk ik expres gedaan)
Mebus  Hackintosh
Mebus Hackintosh
22 jaar geleden
 
0 +1 -0 -1
mischien leuk trouwens lapidi om de volgende keer een tut te maken over mysql_num_rows of mysql_query of enig andere?


GR. mebus!
Pim Vernooij
Pim Vernooij
22 jaar geleden
 
0 +1 -0 -1
mysql_fetch_object noem je een mini OOP functie... (wat is een mini OOP functie ? :P)

Ik vind dat fout. Dit is geen instantie van een class oid. Eigenlijk weet ik niet echt de voordelen van mysql_fetch_object. Waarvoor dient het? want binnen mij classes gebruik ik geen fetch_object, maar meestal fetch_array of fetch_assoc... veel handiger icm foreach() loops.
Pieter van Linschoten
Pieter van Linschoten
22 jaar geleden
 
0 +1 -0 -1
Maar door middel van mysql_fetch_object, zet je de waarde wel in een object, en daarmee is het een mini OOP, want een class is ook een object waaruit je waarden kan opvragen.

Bij classes kan dit dan wel dmv functies, maar het principe blijft gelijk. In plaats van $class = new class; gebruik je nu de functie mysql_fetch_object();

En verder:
mysql_fetch_object kan ook niet met foreach worden gebruikt, omdat het geen array is.


22 jaar geleden
 
0 +1 -0 -1
Ik zal even kijken of ik nog een performence test op pootjes krijg over het aanroepen van de gegevens.
Pim Vernooij
Pim Vernooij
22 jaar geleden
 
0 +1 -0 -1
Lapidi: ik weet zeer goed wat OOP is, ik werk er dagelijks mee. Ik ben het alleen niet eens met je stelling dat mysql_fetch_object een mini OOP functie is.. (de term mini OOP functie vind ik zo ie zo al vaag) Ok, er word een object aangemaakt, maar wat kan dat object? Juist. Helemaal niets...

Daarom vraag ik me ook af waarvoor mysql_fetch_object dient? Ja, de schrijfwijze is makkelijk, als je toch al met OOP bezig bent. Is er nog een andere meerwaarde?

Btw:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($aRow as $sleutel => $waarde){
     echo Ucfirst($key) . ': ' . $waarde . ' | ';
}

?>


$key moet neem ik aan $sleutel worden ? (pagina over mysql_fetch_assoc)
Tommy
Tommy
22 jaar geleden
 
0 +1 -0 -1
nice
Pieter van Linschoten
Pieter van Linschoten
22 jaar geleden
 
0 +1 -0 -1
@ Pim:
Jij bent niet de enige die zich er dagelijks mee bezig houd. Maar ik gebruik die functie zelf nooit, ik weet alleen wat het doet in grote lijnen. En ja, ik ga die functie niet lopen afkraken, want ik moet toch wel enigzins objectief blijven :p


And ik can engels en nederlands niet more uit eachother houden.
Maar I heb that al gechanged.
Hipska BE
Hipska BE
22 jaar geleden
 
0 +1 -0 -1
handige tut! bedankt! ;-)
Willem vp
Willem vp
22 jaar geleden
 
0 +1 -0 -1
@Pim:
*_fetch_object() heeft inderdaad geen toegevoegde waarde. Het gegenereerde object voldoet alleen aan het principe van "information hiding", maar biedt verder geen methods om bewerkingen op je data uit te voeren. Het enige nut wat ik ervan zie, is dat je op die manier op een consistente manier met je data om kan gaan. Wanneer je zelf alles in objecten kwakt, kan het best hinderlijk zijn als je opeens een 'simpele' array in je code krijgt en dus je data op een andere manier moet gaan bewerken.
PHP erik
PHP erik
22 jaar geleden
 
0 +1 -0 -1
@Lapidi
Ik ben het volledig met Pim eens, het is in geen enkel opzicht OOP. Classes zijn ook niet per s? OOP, kijk maar naar Sebastiaans scripts. W?l classes, geen OOP.
mysql_fetch_object() is ook niet OOP, ook niet een beetje, en het principe is al helemaal niet hetzelfde.
Mathieu Kooiman
Mathieu Kooiman
22 jaar geleden
 
0 +1 -0 -1
Hoewel je minder duizelig wordt van de nummertjes bij mysql_fetch_assoc() dan bij mysql_fetch_row() is dat niet de enige reden waarom de eerst genoemde beter is. Mocht je ooit de volgorde van je SELECT kolommen wijzigen (bijvoorbeeld je voegt er een toe aan het begin), dan moet je alle code wijzigen die gebruik maakt van die rij aangezien alle kolomnummers er nu eentje zijn opgeschoven. Dit probleem heb je niet met mysql_fetch_assoc().
Jan v.d bij
jan v.d bij
22 jaar geleden
 
0 +1 -0 -1
Hallo jongens(meisjes) ik ben hier nieuw op deze pagina maar ik had een vraagje: hoe kun je een inlog systeem maken met php op je pagina? zoals je op deze pagina ook helemaal kon registreren!

Vriendelijke Groeten,
jan v/d Bij
Lissy Pixel
Lissy Pixel
22 jaar geleden
 
0 +1 -0 -1
Geweldige tut en ik ga hem zeker gebruiken om een en ander te testen :)
Bedankt voor het delen!
Nick Mulder
Nick Mulder
22 jaar geleden
 
0 +1 -0 -1
Bij mij doet mysql_fetch_array(); raar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$host
= "localhost";   //mysql locatie
$user = "root";      //mysql gebruikersnaam
$pass = "********";      //mysql wachtwoord
$db = "wiskunde";   //mysql database

mysql_connect($host,$user,$pass) or die(mysql_error());
mysql_select_db($db);

$get_totaal = mysql_query("SELECT ip FROM statistiek_2007");
$totaal = mysql_num_rows($get_totaal);
$sort2 = mysql_fetch_array($get_totaal);

sort($sort2, SORT_NUMERIC);

echo "<pre>";
print_r($sort2);
print_r($totaal);
echo "</pre>";
?>


Hij print
Array
(
[0] => 145.53.27.203
[1] => 145.53.27.203
)
76

Waarbij 145.53.27.203 het eerste ip is in de lijst en 76 het aantal kollomen
T H
T H
22 jaar geleden
 
0 +1 -0 -1
ik gebruik altijd mysql_fetch_assoc.... die functie vind ik het minst ingewikkeld om te gebruiken :-)

gr, tim
Frank -
Frank -
22 jaar geleden
 
0 +1 -0 -1
@YPM: mysql_fetch_array() doet niet raar, jij doet raar. Waarom laat je de database niet sorteren? Die kan dat veel beter en vooral sneller dan php.

Sorteren in php doe je met data die niet uit een database komt.
Nick Mulder
Nick Mulder
22 jaar geleden
 
0 +1 -0 -1
Ook als ik "SORT BY ip" gooit ie alleen de waarde in row 1 eruit... met komma getallen kan je niet goed sorten in SQL....
Willem vp
Willem vp
22 jaar geleden
 
0 +1 -0 -1
@YPM: Vergeet niet dat mysql_fetch_* slechts 1 row per keer ophaalt. Als je meer rows wilt ophalen, moet je dat in een (while-)loop doen.
Rudie dirkx
rudie dirkx
21 jaar geleden
 
0 +1 -0 -1
Quote:
Het liefst gebruik ik zelf mysql_fetch_array(). Ik weet niet precies waarom, maar ik voel mij goed bij het idee dat het niet uitmaak hoe ik de waarden aanroep(geindexeerd of geassocieerd).

Je weet toch hoe je het aanroept!? Als je indexen gebruikt (dat is hardcoded dus daar kan je rekening mee houden), gebruik dan _row(), anders gebruik je _assoc(). Je gebruikt het toch nooit samen in een blok script! Als je dat wel doet, kan je het makkelijk en logisch veranderen naar 1 vd 2.
Je hardcode welke methode je gebruikt en hoe je ze uit je result set haalt, hoezo is het dan fijn om te weten dat je indexen en veldnamen kan gebruiken!? Je gebruikt er toch maar 1 van!? Wat je niet gebruikt, gebruik je niet, dus heb je niet nodig.
Ga dan voor de snelheidswinst!
Ben Elsinga
Ben Elsinga
20 jaar geleden
 
0 +1 -0 -1
Hallo,
Ik ben bezig met een systeem te maken zodat ik alle emailadressen in mijn database in 1x kan emailen.

Hieronder staat het stukje om de email adressen te selecteren. Het werkt prima, maar graag zou ik willen weten of ik de functies wel goed gebruik...
Ik snap namelijk niet echt hoe arrays werken en mysql_fetch.
Heb allerlei turtorials gelezen en dit is het resultaat... graag uw commentaar:)

Alvast bedankt!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

    //ontvager ophalen
    $sql = "SELECT mail FROM test";
    $res = mysql_query($sql);
    while($list = mysql_fetch_assoc($res)){
        
         $array = $list;
        
               foreach ($array as $mail_ontv){
    
                //mail verzenden
                mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers);
            
            }
            
    }


?>
Joren de Wit
Joren de Wit
20 jaar geleden
 
0 +1 -0 -1
Het kan veel makkelijker:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$sql
= "SELECT mail FROM test";
$res = mysql_query($sql);

while($row = mysql_fetch_assoc($res))
{

   mail($row['mail'], ..., ...);
}

?>

Vergeet in bovenstaande code natuurlijk niet nog even de nodige foutafhandeling toe te passen!
Ben Elsinga
Ben Elsinga
20 jaar geleden
 
0 +1 -0 -1
Dat ga je niet menen blanche!:p

Idd had ik me ook al bedacht toen ik het hier poste. Fout afhandeling zit er nu ook in.
Thijs X
Thijs X
20 jaar geleden
 
0 +1 -0 -1
Als je echt veel email adressen in je lijst hebt staan kan je beter naar meerdere tegelijk mailen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$sql
= "SELECT mail FROM test";
$res = mysql_query($sql);

$i = 1;
$temp_emails = "";

while($row = mysql_fetch_assoc($res))
{

   $temp_emails .= $row['email'].", ";
   if( ( $i % 50 == 0 ) || msyql_num_rows($res) == $i )
   {

        // Laatste , weghalen uit de lijst
        $temp_emails =  substr($temp_emails, -2);
        $mail( $temp_emails, ...., .... );
        $temp_emails = "";
   }


   $i++;
}

?>


Edit:

Typo
Joren de Wit
Joren de Wit
20 jaar geleden
 
0 +1 -0 -1
Nog beter is het om dan Swift Mailer te gebruiken en met de batch send functionaliteit de mailtjes te versturen...
Tim
Tim
19 jaar geleden
 
0 +1 -0 -1
Hehe en toen werd het duidelijk! Mooie en simpele turtorial.
Tikkes C
Tikkes C
19 jaar geleden
 
0 +1 -0 -1
kijk eens bij 'mysql_fetch_object'

zin: dan zit je goed foud
foud is met een t ;)
daar heb je vast overgekeken!

Ik vind dit een prachtige tutorial...mooi, duidelijk en eenvoudig.

Mooi werk!
Pieter van Linschoten
Pieter van Linschoten
19 jaar geleden
 
0 +1 -0 -1
Tikkes, dat was expres: Om het nog eens te benadrukken, heb ik de d en t omgewisseld.

De zin is: "dan zit je goet foud!"
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Computer
Computer
19 jaar geleden
 
0 +1 -0 -1
Ik doe het net zoals het voorbeeld in de tutorial en dan krijg ik dit:
Warning: Wrong parameter count for mysql_fetch_assoc()
Weet iemand wat dit betekent?

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. Waarom deze tutorial?
  2. mysql_fetch_array()
  3. mysql_fetch_assoc()
  4. mysql_fetch_row()
  5. mysql_fetch_object()
  6. Wat moet jij gebruiken?

Labels

  • Geen tags toegevoegd.

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.