SQL Beginnershandleiding

  1. Inleiding
  2. De eerste tabel
  3. De database benaderen vanuit PHP
  4. PDO: De database benaderen vanuit PHP
  5. Invoegen van records
  6. PDO: Invoegen van records
  7. Selecteren van records
  8. PDO: Selecteren van records
  9. Wijzigen van records
  10. PDO: Wijzigen van records
  11. Verwijderen van records
  12. PDO: Verwijderen van records
  13. Sleutels en constraints
  14. Selecteren uit meerdere tabellen: JOINS
  15. Werken met data en tijden
  16. Aggregate functies en GROUP BY
  17. Debuggen: het oplossen van SQL fouten
  18. Slotwoord en referenties
  19. Reacties op deze tutorial

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
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: query
1
2
3
4
5
6
UPDATE
    werknemers
SET
    salaris_schaal = 12
WHERE
    voornaam = 'Tim'
Code: output
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
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.

Vorige Volgende