Ga naar inhoud

[PHP] Query in een function()


Aanbevolen berichten

Ik wil een MySQL query in een functie zetten, als volgt: [code:1:284955ff36] <? function sql_normal($table) { $query = "SELECT * FROM $table LIMIT 20"; $result = mysql_query($query); $row = mysql_fetch_assoc($result); ?> [/code:1:284955ff36] Vragen: - komt dit veel voor/is dit ene goede methode? - Kan ik alle uit de database gehaalde gegevens zo stuk voor stuk weergeven met deze query? Alvast bedankt :)!
Link naar reactie
Je kan prima extra functies schrijven in PHP, daar is op zich niets mis mee. Maar als je dat doet zou ik het wel anders doen. Allereerst zou ik waarde teruggeven bij aanroep van de functie, anders kan je er niets mee. Ten tweede is het misschien handig om met references te gaan werken (alhoewel Rémy daar meer van weet). Hoe dan ook, een functie mag eigenlijk nooit output geven naar de browser en raak niet verleid om globals te bruiken. - Bas
Link naar reactie
Ik denk dat je dit bedoelt ;) [code:1:c0afbff00d] <?php function sql_normal($table) { // Query uitvoeren $result_id = mysql_query("SELECT * FROM " . $table . " LIMIT 20"); // Result ID wat de query heeft teruggegeven ook weer terugsturen naar het script return $result_id; } $result = sql_normal('mijntabel'); while ( $record = mysql_fetch_assoc($result) ) { print $record['Veld1] . $record['Veld2'] . $record['Veld3']; } ?> [/code:1:c0afbff00d] Groetjes, Vic
Link naar reactie
Ik begrijp de bedoeling niet zo, maar dat zal wel aan mij liggen. Wel heb ik een tweetal opmerkingen over die paar regels code: [list:1041b014af] [*:1041b014af] SELECT * ... is fout, gebruik *altijd* kolomnamen (dus SELECT kolom1, kolom 2 etc). Dit is ten eerste sneller en ten tweede stukken duidelijker. [*:1041b014af] Variabelen horen niet tussen quotes, dus het moet worden:[code:1:1041b014af]$query = "SELECT * FROM " . $table . "LIMIT 20";[/code:1:1041b014af] Ook hier geldt: dit is sneller en duidelijker (qua syntaxhighlighting). [/list:u:1041b014af]
Link naar reactie
Wat wel een veelgebruikte methode is, is om je database access in een apart gedeelte van je applicatie af te handelen (DAL). In de applicatie gebruik je dan geen losse (ad hoc) queries meer, maar vraag je de gegevens op via een functie/class. Bijvoorbeeld (allemaal pseudocode natuurlijk) op een nieuwspagina heb je een lijst met nieuwtjes staan [code:1:610eaadf31] // lijst met nieuwtjes ophalen $news = new News; $allItems = $news->getAllNewsItems(); // print linkjes naar de items echo "<ol>"; for ($item in $allItems) { echo "<li>", $item, "</li>"; } echo "</ol>"; [/code:1:610eaadf31] En op de detailpagina van je nieuwsrubriek heb je een functie die op basis van een NewsId een bericht teruggeeft. [code:1:610eaadf31] $news = new News; $newsitem = $news->getNewsItemById($newsId); // print details echo $newsitem["title"]; echo $newsitem["text"]; [/code:1:610eaadf31] enz. Alle nieuws gerelateerde bewerkingen (lezen, schrijven) op de database bundel je in de News class. En de verschillende methods geven toegang tot de data. Voordeel van deze methode is een betere scheiding van de verschillende applicatielagen (n-tier). Nadeel is het extra tikwerk (in eerste instantie) en de iets steilere leercurve.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...