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)
1
2
3
4
5
6
7
2
3
4
5
6
7
UPDATE
tabelnaam
SET
kolomnaam = 'waarde',
kolomnaam = 'waarde'
WHERE
kolomnaam = 'waarde'
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:
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)
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
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!';
}
?>
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 pagina | volgende pagina »
Inhoudsopgave
- Inleiding
- De eerste tabel
- De database benaderen vanuit PHP
- Invoegen van records
- Selecteren van records
- Wijzigen van records
- Verwijderen van records
- Sleutels en constraints
- Selecteren uit meerdere tabellen: JOINS
- Werken met data en tijden
- Aggregate functies en GROUP BY
- Debuggen: het oplossen van SQL fouten
- Slotwoord en referenties