In deze tutorial laat ik zien hoe je zelf MySQL functies kan schrijven. Je kan het vergelijken met functies in PHP en andere talen. Het is dus de bedoeling voor bepaalde berekeningen en opdrachten die je vaak doet een functie te schrijven in MySQL.
- PHP code wordt korter doordat je bepaalde functies rechtstreeks in je MySQL query gaat oproepen.
- Overzichtelijkere code
- Beter onderhoudbaar
- Functies kunnen opnieuw gebruikt worden in andere websites en applicaties
Om het nut van functies duidelijker te maken even een voorbeeld, je hebt volgende tabel met de naam products:
| id | name | price |
| 1 | Laptop | 1000 |
| 2 | Speakers | 23 |
| 3 | CD-ROM player | 15 |
| 4 | Monitor | 55 |
| 5 | USB-Stick | 12 |
Wat je wilt gaan doen is een lijst van producten tonen met hun prijs inclusief BTW. De prijs die je in de tabel ziet staan is exclusief BTW.
Zonder MySQL functies
Zonder funties zal je een select doen van al de producten. Met PHP loop je dan door je resultaten en bereken je met PHP telkens het subtotaal(prijs + btw) en toon je het op je scherm.
De query die je gaat gebruiken:
0 | SELECT name, price FROM products |
De PHP code:
0 1 2 3 4 | $query = "SELECT name, price FROM products";$result = mysql_query($query); while($row = mysql_fetch_array($result)){ echo $row['name'] . ': €' . $row['price'] + (($row['price']/100)*21) . '<br />'; } |
Resultaat:
Laptop: €1210
Speakers: €27,83
CD-Rom player: €18,15
Monitor: €66,55
USB-Stick: €14,52
Met MySQL functies
Je maakt een subtotaal functie aan. Je doet een select van de producten en haalt price door de subtotaal functie. Als laatste tonen je de data met PHP.
De functie aanmaken:
Om een functie aan te maken kan je best MySQL Query Broser(MQB) gebruiken of een andere MySQL GUI. Start MQB en druk op Script > Create Stored Procedure / Function. Vul als naam voor je functie subtotal in en druk op Create FUNCTION. Nu zal er een nieuw venster openen met de basis structuur voor de functie.

0 1 2 3 4 5 6 | DELIMITER $$ DROP FUNCTION IF EXISTS `test`.`subtotal` $$CREATE FUNCTION `test`.`subtotal` () RETURNS INTBEGIN END $$ DELIMITER ; |
Je vervolgedigd de functie als volgt:
0 1 2 3 4 5 6 7 8 | DELIMITER $$ DROP FUNCTION IF EXISTS `test`.`subtotal` $$CREATE FUNCTION `test`.`subtotal` (price DOUBLE) RETURNS DOUBLE BEGIN RETURN price + ((price/100) * 21); END $$ DELIMITER ; |
Het eerste wat je gaat doen is een input variable maken zodat er een prijs aan de functie kan meegegeven worden.
Dat is de price DOUBLE tussen de haakjes achter de functienaam. Tussen BEGIN en END zie je de berekening voor het subtotaal.
De query die je gaat gebruiken:
0 | SELECT name, subtotal(price) AS price FROM products p |
De PHP code:
0 1 2 3 4 5 | $query = "SELECT name, subtotal(price) AS price FROM products p;"; $result = mysql_query($query); while($row = mysql_fetch_array($result)){ echo $row['name'] . ': €' . $row['price'] . '<br />'; } |
Resultaat:
Laptop: €1210
Speakers: €27,83
CD-Rom player: €18,15
Monitor: €66,55
USB-Stick: €14,52
Tot slot
Na het bekijken van het voorbeeld zal je de voordelen van functies wel meteen begrijpen. Probeer zoveel mogelijk PHP bewerkingen om te zetten naar MySQL functies. Hierdoor zal je code vele overzichtelijker/korter worden.
[…] public links >> schrijven MySQL functies schrijven Saved by SniperWj on Fri […]
Pingback door Recent Links Tagged With "schrijven" - JabberTags — 23 augustus 2008 19:23 @ 19:23