• PHP Deel 10: MySQL

    8 April 2011 00:16 door
    Je teksten steeds aanpassen in de html code van je website kan onhandig worden. Al zeker als je een hoop pagina's hebt. Daarom gaan we de mogelijkheden van een database genaamd MySQL bekijken. Hierin kan er data opgeslagen worden.



    10.1 Verbindingen

    Voordat we gegevens uit een database kunnen gebruiken moeten we eerste verbinding maken, PHP heeft standaard een aantal library’s voor de meest gebruikte database pakketen, hier werken we alleen met MySQL. Verbinden met een MySQL database gaat als volgt:

    PHP-code:
    <?php
        $username 
    'Martijn';
        
    $password 'martijn';
        
    $host 'localhost'// Deze is meestal localhost ;)
        
    $database 'mijnDatabase';

        
    /*
            Verbinding maken met de database, we ondrukken hier de fout maar vangen
            deze later terug op! We maken hier ook gebruik van error-supression, we vangen
            eventuele fouten hierna op!

            De @mysql_connect kan ook mysql_connect worden indien we onze eigen error
            handler gebruiken. Immers bepalen we dan zelf wat we weergeven en wat niet!
        */
        
    $verbinding = @mysql_connect($host$username$password);

        
    /*
            Als de verbinding mislukt geeft mysql_connect() FALSE terug,
            we controleren dus of de verbinding gelukt is
        */
        
    if(!$verbinding)
        {
            
    /*
                Als het verbinden mislukt is vragen we de juiste foutmelding op met
                mysql_error() en drukken we deze af. De uitvoer van het script wordt
                gestopt door die()
            */
            
    die ('Er kon geen verbinding gemaakt worden met de database.<br />'.mysql_error());
        }
        
        
    /*
            Nu hebben we verbinding met een database-server, voordat we queries kunnen
            uitvoeren moeten we eerste nog kiezen welke database we willen gebruiken
        */
        
    if(!mysql_select_db($database$verbinding))
            die(
    'De gevraagde database is niet gevonden');

        
    // Nu kunnen we queries uitvoeren

        // Nadat alle queries zijn uitgevoerd moeten we de verbinding terug sluiten
        
    mysql_close($verbinding);
    ?>
    Meer informatie over MySQL-functies vind je php.net

    10.2 Query’s uitvoeren

    10.2.1 Select
    Met een select-query kunnen we gegevens uit een database lezen, de syntax voor MySQL is grotendeels gelijk aan de van Oracle. In dit voorbeeld gaan we alle gegevens uit de tabel ‘users’ lezen en afdrukken:

    PHP-code:
    <?php
        
    //Verbinding maken, database kiezen ...

        
    $query 'SELECT * FROM users';

        
    /*
            mysql_query() geeft een resultset terug als de query succesvol is uitgevoerd,
            en geeft FALSE als de query is mislukt
        */
        
    $resultaat mysql_query($query$verbinding);

        if(!
    $resultaat// Is er een fout opgetreden tijdens het uitvoeren van de query?
            
    die(mysql_error());

        
    /*
            Als de query wel succesvol is uitgevoerd kunnen we door het resultaat
            loopen met een While-loop, met mysql_nuw_rows() kunnen we het aantal
            rijen in de resultset tellen
        */
        
    echo 'Aantal users: ' mysql_num_rows($resultaat);

        while(
    $rij mysql_fetch_assoc($resultaat))
        {
            
    /*
                We gaan nu rij per rij de resultset uitlezen; mysql_fetch_assoc geeft voor
                 iedere rij een assiociatieve array terug, de key is de naam van het veld
                (de kolom)en de value is de echte waarde van de huidige rij
            */
            
    echo $rij['name'] . $rij['firstname'] . $rij['city'];
        }

        
    // Verbinding terug sluiten
    ?>
    mysql_error() geeft altijd de laatst opgetreden mysql fout terug, we kunnen deze dus overal gebruiken.

    Er zijn ook andere methodes om de rijen uit de resultset te halen, we kunnen in plaats van een associatieve array ook objecten etc opvragen, op php.net staan alle mysql_fetch_* functies.

    10.2.2 Insert
    Met insert kunnen we gegevens aan een database toevoegen:

    PHP-code:
    <?php
        
    // Verbinding maken, database kiezen ...

        
    $query 'INSERT INTO users(name, firstname, street) VALUES ("Croonen", "Martijn", "Komstraat")';

        
    /*
            mysql_query() geeft TRUE terug als de query succesvol is uitgevoerd,
            en geeft FALSE als de query is mislukt
        */
        
    $resultaat mysql_query($query$verbinding);

        if(!
    $resultaat// Is er een fout opgetreden tijdens het uitvoeren van de query?
            
    die('De user is niet toegevoegd');

        echo 
    'De user is toegevoegd!';
        echo 
    'Aantal nieuwe users: '.mysql_affected_rows($verbinding);

        
    // Verbinding terug sluiten
    ?>
    10.2.3 Update
    Met een update kunnen we gegevens die al in een database staan aanpassen:

    PHP-code:
    <?php
        
    // Verbinding maken, database kiezen ...

        
    $query 'UPDATE users SET street = "Lomstraat" WHERE name = "Croonen"';

        
    /*
            mysql_query() geeft TRUE terug als de query succesvol is uitgevoerd,
            en geeft FALSE als de query is mislukt
        */
        
    $resultaat mysql_query($query$verbinding);

        if(!
    $resultaat// Is er een fout opgetreden tijdens het uitvoeren van de query?
            
    die('Het updaten is mislukt');

        echo 
    'Aantal aangepaste users: '.mysql_affected_rows($verbinding);

        
    // Verbinding terug sluiten
    ?>
    10.2.4 Delete
    Met een delete-query kunnen we gegevens in een database verwijderen:

    PHP-code:
    <?php
        
    // Verbinding maken, database kiezen ...

        
    $query 'DELETE FROM users WHERE name = "Croonen"';

        
    /*
            mysql_query() geeft TRUE terug als de query succesvol is uitgevoerd,
            en geeft FALSE als de query is mislukt
        */
        
    $resultaat mysql_query($query$verbinding);

        if(!
    $resultaat// Is er een fout opgetreden tijdens het uitvoeren van de query?
            
    die('Het verwijderen is mislukt');

        echo 
    'Aantal verwijderde users: '.mysql_affected_rows($verbinding);

        
    // Verbinding terug sluiten
    ?>
    SQL statements in MySQL zijn grotendeels gelijk aan die van ORACLE.

    Geschreven door: Martijn Croonen.
    Aanpassingen door: Aerts Kurt.