Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound varia
Met deze code wil een gegevens uit de database updaten. Zodra ik iets aanpas en op de knop "update" klik dan verschijnt deze error.
$parameters = array(':id'=>$id);
var_dump($parameters);
$sth = $pdo->prepare('SELECT `ID`, `voornaam`, `achternaam`, `telefoonnummer`, `email`, `postcode`, `datum`, `aantalmensen`, `bezoek` FROM `gebruikers` WHERE ID = :id');
$sth->execute($parameters);
$row = $sth->fetch();
$voornaam = $row['voornaam'] ;
$achternaam = $row['achternaam'] ;
$telefoonnummer = $row['telefoonnummer'] ;
$email = $row['email'] ;
$postcode = $row['postcode'] ;
$datum = $row['datum'] ;
$aantalmensen = $row['aantalmensen'] ;
$bezoek = $row['bezoek'] ;
?>
<html>
<head>
</head>
<body>
<h2>Reservering updaten</h2>
<form action="" method="post">
Voornaam: <input type="text" name="voornaam" value=""> <br>
Achternaam: <input type="text" name="achternaam" value=""> <br>
telefoonnummer <input type="number" name="telefoonnummer" value=""> <br>
Email <input type="text" name="email" value=""><br>
Postcode <input type="text" name="postcode" value=""><br>
Datum: <input type="date" id="datum" name="datum" value=""> <br>
Aantal mensen: <input type="number" name="aantalmensen" id="aantalmensen" value=""> <br>
Bezoek: <select id="bezoek" name="bezoek">
<option value="aanwezig" >Aanwezig</option>
<option value="afwezig" >Afwezig</option>
<option value="afgemeld" >Afgemeld</option>
</select>
<br> <input type="submit" name="submit" value="verzenden"><br>
</form>
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
// maakt een query
if(isset($_POST['submit']))
{
// begin waarde van de fout check variable
$fout = FALSE;
// POST bijzonderheden mag hier wel blijven, want dat veld is niet verplicht om in te vullen.
$voornaam = $_POST['voornaam'];
// checkt of het veld 'voornaam' gevult is, zo niet dan geeft hij de melding vul het veld naam in
if (!empty($_POST['voornaam'])) {
$naam = $_POST['voornaam'];
}
else { $foutmelding1 = "vul het veld naam in";
$fout = TRUE;
}
// checkt of het veld 'achternaam' gevult is, zo niet dan geeft hij de melding vul het veld naam in
if (!empty($_POST['achternaam'])) {
$achternaam = $_POST['achternaam'];
}
else { $foutmelding2 = "vul het veld soort in";
$fout = TRUE;
}
// checkt of het veld 'telefoonnummer' gevult is, zo niet dan geeft hij de melding vul het veld naam in
if (!empty($_POST['telefoonnummer'])) {
$telefoonnummer = $_POST['telefoonnummer'];
}
else { $foutmelding3 = "vul het veld prijs in";
$fout = TRUE;
}
// checkt of het veld 'email' gevult is, zo niet dan geeft hij de melding vul het veld naam in
if (!empty($_POST['email'])) {
$email = $_POST['email'];
}
else { $foutmelding4 = "vul het veld bijzonderheden in";
$fout = TRUE;
}
// checkt of het veld 'postcode' gevult is, zo niet dan geeft hij de melding vul het veld naam in
if (!empty($_POST['postcode'])) {
$postcode = $_POST['postcode'];
}
else { $foutmelding5 = "vul het veld postcode in";
$fout = TRUE;
}
// checkt of het veld 'postcode' gevult is, zo niet dan geeft hij de melding vul het veld naam in
if (!empty($_POST['datum'])) {
$datum = $_POST['datum'];
}
else { $foutmelding5 = "vul het veld postcode in";
$fout = TRUE;
}
if (!empty($_POST['aantalmensen'])) {
$aantalmensen = $_POST['aantalmensen'];
}
else { $foutmelding5 = "vul het veld postcode in";
$fout = TRUE;
}
if (!empty($_POST['bezoek'])) {
$bezoek = $_POST['bezoek'];
}
else { $foutmelding5 = "vul het veld postcode in";
$fout = TRUE;
}
if ($fout == FALSE)
{
// array aanmaken voor de parameters.
// Een array wordt gebruikt om de gegevens beveiligd te houden.
$parameters = array(':voornaam'=>$voornaam,
':achternaam'=>$achternaam,
':telefoonnummer'=>$telefoonnummer,
':postcode'=>$postcode,
':datum'=>$datum,
':email'=>$email,
':aantalmensen'=>$aantalmensen,
':bezoek'=>$bezoek);
// maakt een query die iets in de database gaat zetten
$sth = $pdo->prepare('UPDATE gebruikers SET voornaam = :voornaam, achternaam= :achternaam , telefoonnummer = :telefoonnummer , email = :email , postcode = :postcode , datum = :datum , aantalmensen = :aantalmensen , bezoek = :bezoek WHERE ID = :id');
$sth->execute($parameters);
echo " <br> aantal rijen: ".$sth->RowCount();
echo "<br> <br>";
echo "Update is gelukt";
header("Refresh:3");
}
}
$sth = $pdo->prepare('select * from gebruikers');
$sth->execute();
// maakt een query
if(isset($_POST['submit']))
{
// begin waarde van de fout check variable
$fout = FALSE;
// POST bijzonderheden mag hier wel blijven, want dat veld is niet verplicht om in te vullen.
$voornaam = $_POST['voornaam'];
// checkt of het veld 'voornaam' gevult is, zo niet dan geeft hij de melding vul het veld naam in
if (!empty($_POST['voornaam'])) {
$naam = $_POST['voornaam'];
}
else { $foutmelding1 = "vul het veld naam in";
$fout = TRUE;
}
// checkt of het veld 'achternaam' gevult is, zo niet dan geeft hij de melding vul het veld naam in
if (!empty($_POST['achternaam'])) {
$achternaam = $_POST['achternaam'];
}
else { $foutmelding2 = "vul het veld soort in";
$fout = TRUE;
}
// checkt of het veld 'telefoonnummer' gevult is, zo niet dan geeft hij de melding vul het veld naam in
if (!empty($_POST['telefoonnummer'])) {
$telefoonnummer = $_POST['telefoonnummer'];
}
else { $foutmelding3 = "vul het veld prijs in";
$fout = TRUE;
}
// checkt of het veld 'email' gevult is, zo niet dan geeft hij de melding vul het veld naam in
if (!empty($_POST['email'])) {
$email = $_POST['email'];
}
else { $foutmelding4 = "vul het veld bijzonderheden in";
$fout = TRUE;
}
// checkt of het veld 'postcode' gevult is, zo niet dan geeft hij de melding vul het veld naam in
if (!empty($_POST['postcode'])) {
$postcode = $_POST['postcode'];
}
else { $foutmelding5 = "vul het veld postcode in";
$fout = TRUE;
}
// checkt of het veld 'postcode' gevult is, zo niet dan geeft hij de melding vul het veld naam in
if (!empty($_POST['datum'])) {
$datum = $_POST['datum'];
}
else { $foutmelding5 = "vul het veld postcode in";
$fout = TRUE;
}
if (!empty($_POST['aantalmensen'])) {
$aantalmensen = $_POST['aantalmensen'];
}
else { $foutmelding5 = "vul het veld postcode in";
$fout = TRUE;
}
if (!empty($_POST['bezoek'])) {
$bezoek = $_POST['bezoek'];
}
else { $foutmelding5 = "vul het veld postcode in";
$fout = TRUE;
}
if ($fout == FALSE)
{
// array aanmaken voor de parameters.
// Een array wordt gebruikt om de gegevens beveiligd te houden.
$parameters = array(':voornaam'=>$voornaam,
':achternaam'=>$achternaam,
':telefoonnummer'=>$telefoonnummer,
':postcode'=>$postcode,
':datum'=>$datum,
':email'=>$email,
':aantalmensen'=>$aantalmensen,
':bezoek'=>$bezoek);
// maakt een query die iets in de database gaat zetten
$sth = $pdo->prepare('UPDATE gebruikers SET voornaam = :voornaam, achternaam= :achternaam , telefoonnummer = :telefoonnummer , email = :email , postcode = :postcode , datum = :datum , aantalmensen = :aantalmensen , bezoek = :bezoek WHERE ID = :id');
$sth->execute($parameters);
echo " <br> aantal rijen: ".$sth->RowCount();
echo "<br> <br>";
echo "Update is gelukt";
header("Refresh:3");
}
}
$sth = $pdo->prepare('select * from gebruikers');
$sth->execute();
Zie ook de UBB-codes in de Veelgestelde Vragen.
Ik zie $id in je code verder nergens terugkomen namelijk.
Ik neem het ID mee vanuit de vorige pagina via een GET
Dus in de $id zit het nummer van de gegevens die je wilt updaten.
Gewijzigd op 07/01/2021 10:56:06 door geert Velden
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// array aanmaken voor de parameters.
// Een array wordt gebruikt om de gegevens beveiligd te houden.
$parameters = array(':voornaam'=>$voornaam,
':achternaam'=>$achternaam,
':telefoonnummer'=>$telefoonnummer,
':postcode'=>$postcode,
':datum'=>$datum,
':email'=>$email,
':aantalmensen'=>$aantalmensen,
':bezoek'=>$bezoek);
// maakt een query die iets in de database gaat zetten
$sth = $pdo->prepare('
UPDATE gebruikers
SET voornaam = :voornaam, achternaam= :achternaam , telefoonnummer = :telefoonnummer , email = :email , postcode = :postcode , datum = :datum , aantalmensen = :aantalmensen , bezoek = :bezoek
WHERE ID = :id
');
$sth->execute($parameters);
?>
// array aanmaken voor de parameters.
// Een array wordt gebruikt om de gegevens beveiligd te houden.
$parameters = array(':voornaam'=>$voornaam,
':achternaam'=>$achternaam,
':telefoonnummer'=>$telefoonnummer,
':postcode'=>$postcode,
':datum'=>$datum,
':email'=>$email,
':aantalmensen'=>$aantalmensen,
':bezoek'=>$bezoek);
// maakt een query die iets in de database gaat zetten
$sth = $pdo->prepare('
UPDATE gebruikers
SET voornaam = :voornaam, achternaam= :achternaam , telefoonnummer = :telefoonnummer , email = :email , postcode = :postcode , datum = :datum , aantalmensen = :aantalmensen , bezoek = :bezoek
WHERE ID = :id
');
$sth->execute($parameters);
?>