Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound varia

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Geert Velden

geert Velden

07/01/2021 09:15:46
Quote Anchor link
Ik krijg deze error code en weet niet wat er fout is. Ik heb vrij wel alles na gekeken maar krijg hem er niet uit. Ik heb ook het web al afgezocht naar een oplossing. Kan iemand mij hiermee helpen?
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="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $voornaam ?>
">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $foutmelding1; ?>
<br>
Achternaam: <input type="text" name="achternaam" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $achternaam ?>
">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $foutmelding2; ?>
<br>
telefoonnummer <input type="number" name="telefoonnummer" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $telefoonnummer ?>
">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $foutmelding3; ?>
<br>
Email <input type="text" name="email" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $email ?>
"><br>
Postcode <input type="text" name="postcode" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $postcode ?>
"><br>
Datum: <input type="date" id="datum" name="datum" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $datum ?>
"> <br>
Aantal mensen: <input type="number" name="aantalmensen" id="aantalmensen" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $aantalmensen ?>
"> <br>
Bezoek: <select id="bezoek" name="bezoek">
<option value="aanwezig"
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if($bezoek == "aanwezig") echo "selected" ?>
>Aanwezig</option>
<option value="afwezig"
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if($bezoek == "afwezig") echo "selected" ?>
>Afwezig</option>
<option value="afgemeld"
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if($bezoek == "afgemeld") echo "selected" ?>
>Afgemeld</option>
</select>
<br> <input type="submit" name="submit" value="verzenden"><br>
</form>





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
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();
 
PHP hulp

PHP hulp

03/12/2024 19:01:48
 
- Ariën  -
Beheerder

- Ariën -

07/01/2021 10:39:11
Quote Anchor link
Kan je jouw code tussen code-tags zetten?
Zie ook de UBB-codes in de Veelgestelde Vragen.
 
Ward van der Put
Moderator

Ward van der Put

07/01/2021 10:40:32
Quote Anchor link
Wat zit er in de $id wanneer je die in array(':id'=>$id) gebruikt?
Ik zie $id in je code verder nergens terugkomen namelijk.
 
Geert Velden

geert Velden

07/01/2021 10:54:58
Quote Anchor link
$id = $_GET['reserveringID'];

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
 
Ward van der Put
Moderator

Ward van der Put

07/01/2021 12:00:05
Quote Anchor link
Maar hier ontbreekt die $id in de $parameters en dan werkt de UPDATE ... WHERE ID = :id niet:

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
<?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);
?>
 



Overzicht Reageren

 
 

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.