Vraag & Antwoord

Webprogrammeren & scripting

[OO PHP] Aantal zoekresultaten uit MySql query

2 antwoorden
  • Ik ben onlangs begonnen met OO PHP en nog naar hartelust aan het experimenteren. Zo ben ik nu al even bezig met een class voor MySql handling. Het punt waar ik op stuit is het volgende: Als ik een zoek query uitvoer, dan wil ik regelmatig ook graag weten hoeveel resultaten er gevonden zijn. Regelmatig, maar dus lang niet altijd. Ik wil dus een manier hebben om het aantal gevonden zoek resultaten terug te krijgen uit een object/class. Volgens mij (met de nadruk op volgens mij) kan een method maar 1 resultaat retourneren. ('return $resultaat1 $resultaat2;' is volgens mij niet mogelijk.) Ik zoek dus naar een/de beste manier om behalve het zoek resultaat terug te krijgen uit de class/method, ook het aantal gevonden resultaten te weten te komen. Daarbij heb ik vier manieren verzonnen, elk met hun eigen voor en nadelen. Mijn vraag is simpel: hoe denken de meer ervaren OOP'ers hier over? (En misschien zijn er nog wel meer opties waar ik niet aan heb egdacht.) De opties: Het resultaat van de query tesamen met het totaal aantal gevonden resultaten opslaan in een assosiatieve array en die retourneren vanuit de class / method ($query['result'] en $query['total']) Voordeel: alles altijd bij de hand. Nadeel: vaak voor niks het aantal resultaten mee laten nemen. De resutaten moeten eerst worden 'uitgepakt' uit de geretouneerde array. Twee verschillende methods aanmaken; eentje om het resultaat op te halen, eentje om alleen het aantal resultaten te tellen Voordeel: Ik laat de class alleen doen wat nodig is. Nadeel: als ik het totaal aantal wil weten moet ik de query twee keer aanroepen. (1 keer voor de resultaten en 1 keer voor het aantal) PHP laten tellen (b.v. m.b.v. een sizeof() op het resultaat) Voordeel: De class hoeft alleen maar de zoekquery uit te voeren Nadeel: Het gaat rechtstreeks in tegen de mij ooit geleerde regel: "Laat PHP niet doen wat MySQL kan doen" Na het aanroepen van de class, terug in het 'hoofdscript' alsnog een mysql_num_rows uitvoeren op het resultaat Voordeel: De class hoeft alleen maar de zoekquery uit te voeren Nadeel: Dan ga ik buiten de class om alsnog met MySQL aan de gang terwijl het de juist de bedoeling was om het allemaal keurig binnen de class te houden.
  • je hebt de voor- en nadelen van al deze methodes al heel goed door, chapeau! Volgens mij is de oplossing een resultaat-class te bouwen. Die wordt geretourneerd bij een query. Daarop kan je vervolgens naar hartelust num_rows vragen (zonder dat de query daadwerkelijk opnieuw wordt uitgevoerd) en losse rijen opvragen. Als je met mysqli werkt hoef je niet eens een aparte klasse te hebben, wel moet de identifiers naar het resultaat hebben. In jouw klasse voor mysql_handling staat dan iets als: [code:1:5d1aa0389b] public function numRows($result) { return mysqli_num_rows($result); } [/code:1:5d1aa0389b]

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.