Wijzigen van records

Nu hebben we records in een tabel staan en weten we hoe we deze records uit de tabel moeten selecteren. De volgende stap is het wijzigen van records in de database. Hiervoor kent SQL de UPDATE query.

Syntax
De syntax van de UPDATE query ziet er als volgt uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
UPDATE
    tabelnaam
SET
    kolomnaam = 'waarde',
    kolomnaam = 'waarde'
WHERE
    kolomnaam = 'waarde'

Dit is de basis van de UPDATE query en die is altijd hetzelfde. Ook deze query kan op verschillende manieren uitgebreid worden, maar wij houden het voor nu bij de basis.

Een record wijzigen (SQL)
Stel dat we de salaris schaal van onze werknemer 'Tim' willen verhogen naar 12. Dan kunnen we dat met de volgende query doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
UPDATE
    werknemers
SET
    salaris_schaal = 12
WHERE
    voornaam = 'Tim'
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Query OK, 1 row affected (0.04 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Bij een UPDATE query geeft MySQL geen records terug, in de output kunnen we enkel zien of er records gewijzigd zijn. Zoals we zien is dat hier het geval. Als je dit wilt controleren, zou je een SELECT query uit kunnen voeren en de resultaten bekijken.

Een record wijzigen (PHP)
Als we in PHP scripts een query uitvoeren om een record te wijzigen, moeten we naast controleren of de query gelukt is, ook altijd controleren of er wel rijen gewijzigd zijn in de database. Hiervoor biedt PHP ons de functie mysql_affected_rows().
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
require_once 'db_config.php';

$sql = "
    UPDATE
        werknemers
    SET
        salaris_schaal = 12
    WHERE
        voornaam = 'Tim'
"
;

if(!$res = mysql_query($sql))
{

    trigger_error(mysql_error().'<br />In query: '.$sql);
}

elseif(mysql_affected_rows() == 0)
{

    echo 'Geen records gewijzigd. <br />Query: '.$sql;
}

else
{
    echo 'Update was succesvol!';
}

?>

Allereerst valt op dat mysql_affected_rows() geen parameter nodig heeft. Er wordt namelijk automatisch gekeken naar de laatste uitgevoerde query. Verder is het altijd verstandig om tijdens het debuggen ook de query te echoën als er geen rijen geupdate zijn. Op die manier kun je vaak snel een fout achterhalen.

Een query die geen foutmelding geeft hoeft namelijk niet per se records gewijzigd te hebben. Als er geen records zijn die aan de WHERE clausule voldoen, zullen er ook geen records geupdate worden.

« Lees de omschrijving en reacties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.