Mysql connect class

  • Ik heb een script veranderd en wat uitgebreid tot dit gemaakt.


    Wie kan mij zeggen wat ik er nog aan kan veranderen.


    Connect class


    Alles is welkom (ook negatief)


    Mvg.

  • Waarom?
    MySQLi is alleen maar een verbeterde set van functies die meer kan dan de mysql_* functies.
    Ook kan je met de MySQLi class werken als je dat fijner vind.


    Maar dat terzijde.
    1) De naam van je class is een beetje onduidelijk, MySQL zou een betere naam zijn.
    2) je echoëd dingen binnen de class, gebruik exceptions.
    3) ik zie drie keer die; staan, gebruik exceptions.
    4) werk met een PHP 5 constructor, niet met een PHP 4 constructor (__construct() ipv naamvandeclass() *)
    5) geen errors onderdrukken.
    6) defineer de protected property "link" in je class.
    7) geef $host, $user, $pass de standaard waarde van NULL en zet $db helemaal vooraan*
    8) laat de query() method bij select queries een MySQL_Result object returnen**
    9) werk bij de fetch() method met TRUE en FALSE ipv een string,
    als je dan TRUE (===) voor mysql_fetch_object() gebruikt, een string voor mysql_fetch_object() met de tweede parameter gebruikt, en dan de rest voor mysql_fetch_assoc() gebruikt heb je altijd wel iets wat gereturned word. (en een coole feature)


    *

    PHP
    public function __construct($db, $host = NULL, $user = NULL, $pass = NULL)


    **
    Geef hoe dan ook de ruwe SQL aan beide constructors mee.

    PHP
    return new MySQL_Result($result, $query);


    En dan kun je de de fetch() method verplaatsen naar de MySQL_Result class en daar interfaces gebruiken zodat je niet alleen met een while/for loop door de results kan loopen, maar ook met een foreach loop =]

  • Tip:


    Je doet hier een if en elseif!
    Maar als je assoc vaker gebruikt waarom doe je het dan niet op volgende manier:

    PHP
    public function fetch($query, $type = 'assoc') 
        { 
            if ($type == "object") 
                return mysql_fetch_object($sql); 
            else
                return mysql_fetch_assoc($sql); 
        }


    Je geeft gewoon gelijk standaard type mee zo hoef je niet altijd een type mee te geven ;)


    Verder ga jij last krijgen van db connection!
    Je site gaat langszamer draaien door dat je bij elke query een connection aanroept.
    Credits by Darsstar die had het bij mij ook verholpen!


    Probeer gebruik te maken van een static instance, zodat je gaat tellen of er al verbinding is. Zo ja geen nieuwe verbinding maken en gelijk met de query verder, anders moet hij connectie gaan maken.


    Ook is het zo als je myqsli gebruikt dat je het jezelf nog makkelijker kan maken en dat de class dan nog wat sneller kan worden ook.


    Ik zal voorbeeld geven hoe ik bijv mijn query aan roep:
    // Query maken wanneer er verbinding is met de server en database.
    $query = $this->_connection->query($sQuery);


    Die $this->_connection is de variabel die ik gebruik om mijn connection code in te zetten, zelfde als wat jij doet als $this->link, alleen heb ik deze connection variabel gebruikt om het vaker te kunnen gebruiken.


    Daar naast kan je een handige try block gebruiken om te kijken of een query bestaat en zo niet kan je een errorhandler erin verwerken zoals trow new exception.


    Ik hoop dat je het nog volgt, en anders moet je het maar zeggen wat je niet snapt.



    Verder zie ik dat darsstar al aantal dingen nu verteld, die ik eigenlijk ook wilde vertellen.
    Bedankt voor de moeite dos!

    School
    Tweedejaars Informatica Student @ Hogeschool Rotterdam.


    Webtalen
    - PHP ( OOP )
    - SQL
    - JavaScript i.c.m. jQuery framework
    - (x)HTML
    - CSS
    - Actionscript
    - XML


    Programmeertalen
    - Java
    - C#
    - Ruby i.c.m. on Rails framework

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!