Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[PHP] Query in een function()

Annie
7 antwoorden
  • 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 :)!
  • 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
  • Oke, in ieder geval bedankt voor de tips. Mijn doel was eigenlijk het aantal queries in een document te besparen met deze functie, maar dat is dus niet aangeraden ;-). Ik kijk ook even om Rémy misschien nog wat zegt op mijn post, misschien kan ik daar nog meer mee.
    Bedankt.
  • 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
  • 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]
  • De bedoeling was erachter te komen of die code verstandig is om te gebruiken en of het dus veilig is. Het is inmiddels duidelijk dat dit een weinig voorkomende methode is en Bas raadde hem ook niet aan, dus in ieder geval bedankt voor alles :)!
  • Oke :)

Beantwoord deze vraag

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