fout in de sql query prepare

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert Jansen

Robert Jansen

08/06/2016 15:23:21
Quote Anchor link
hallo,

ik heb een script waarmee je een update kan uitvoeren in de db.
Maar ik krijg de volgende foutmelding, wanneer je op de knop drukt van het formulier om te gaan updaten:
Error updating record: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? WHERE id = ?' at line 1


mijn vraag is: hoe kan je de foutmelding oplossen?

alvast bedankt.

mijn code om te updaten is:
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
    if(isset($_POST['submit']))
    {
$sql = "UPDATE users SET password = ? WHERE id = ?  ";
$stmt = $link->prepare($sql);
$stmt->bind_param("si", $password, $id);

//variable aanmaken voor invoegen
 $id = $_POST['id'];
 $password = hash ('SHA512', $_POST['herhaal_ww']);

 $stmt->execute();

if (mysqli_query($link, $sql)) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . mysqli_error($link);
}

    
    //sluiten    
$stmt->close();
mysqli_close($link);
}
 
PHP hulp

PHP hulp

16/11/2024 03:49:59
 
- SanThe -

- SanThe -

08/06/2016 15:37:56
Quote Anchor link
Die error komt van regel 13 waar je de query nogmaals wilt uitvoeren. (Waarom?)
En in $sql staan toch echt gewoon vraagtekens.

Toevoeging op 08/06/2016 15:40:57:

Je zoekt waarschijnlijk iets als $stmt->affected_rows.
 
Thomas van den Heuvel

Thomas van den Heuvel

08/06/2016 17:25:47
Quote Anchor link
password tussen `backticks` zetten? password is een gereserveerd woord.

Waarom gebruik je trouwens prepared statements in MySQLi? :/
En je combineert inderdaad prepared statements en de normale manier van queries uitvoeren in MySQLi...

Queries met prepared statements in MySQLi zijn standaard ook ongebufferd. Dit heeft enige implicaties voor hoe je met queries en query-resultaten om kan gaan...

Daarbij maak je via die constructie ook echt gebruik van de "native" prepared statements van MySQL zelf, dit is echt een functionaliteit van MySQL-databases. Indien je een prepare() uitvoert gaat er echt een query-sjabloon naar de MySQL-server. De execute() aanroep resulteert in NOG een query. Je voert dus effectief TWEE queries uit, wat in dit geval niet echt nodig is.
 



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.