Ik wil via een formulier gegevens in een database updaten maar ik krijg deze melding
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '`Naam2`=VanDenBossche,`VNaam2`=Martha,`Opmerking`= hier de opmerkingen WHERE ...' at line 1
Ik heb al veel gevonden op het internet maar niet het juiste.
Dit is mijn code:
<?php
 
//Inladen van de instellingen.
include '../instellingen.php';
 
$conn = new mysqli($database_adres, $database_login_naam, $database_login_wachtwoord, $database_naam);
//connectie testen
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}  
$Nummer=mysqli_real_escape_string($conn,$_POST['Nummer'];
$Naam=mysqli_real_escape_string($conn,$_POST['Naam'];
$VNaam=mysqli_real_escape_string($conn,$_POST['Voornaam'];
$gebdat=mysqli_real_escape_string($conn,$_POST['Geboortedatum'];
$gebpl=mysqli_real_escape_string($conn,$_POST['Geboorteplaats'];
$overldat=mysqli_real_escape_string($conn,$_POST['Overlijdensdatum'];
$overlpl=mysqli_real_escape_string($conn,$_POST['Overlijdensplaats'];
$Type=mysqli_real_escape_string($conn,$_POST['Type'];
$BS=mysqli_real_escape_string($conn,$_POST['BS'];
$Naam2=mysqli_real_escape_string($conn,$_POST['Naam2'];
$VNaam2=mysqli_real_escape_string($conn,$_POST['Voornaam2'];
$opmerk=mysqli_real_escape_string($conn, $_POST['Opmerking']);

$sql = "UPDATE `rouwbriefnieuw` SET `Naam`= $Naam,`Voornaam`=$VNaam,`geb.datum`=$gebdat,`GebGemeente`=$gebpl ,`overl.datum`=$overldat,`OverlGemeente`=$overlpl,`Type`=$Type,`BS`=$BS,`Naam2`=$Naam2,`VNaam2`=$VNaam2,`Opmerking`= $opmerk WHERE `IDR`=$Nummer ";

if (mysqli_query($conn, $sql)) {
  echo "Record updated successfully";
} else {
  echo "Error updating record: " . mysqli_error($conn);
}
// Sluit de MySQL verbinding.
$conn->close();

?>


Iemand een oplossing?
Je moet je variabelen in je wuery ook tussen single quotes zetten. Anders helpt die escaping ook niet echt.

Wat enters in je query zijn ook niet overbodig. ;-)
Zoals Arien zegt.. en die backticks heb je ook niet nodig zolang je geen gereserveerde MYSQL woorden gebruikt voor je tabel en kolomnamen.

<?php
$sql = "UPDATE rouwbriefnieuw SET
Naam='" . $Naam . "',
Voornaam='" . $VNaam . "',
geb.datum='" . $gebdat . "',
GebGemeente='" . $gebpl . "',
overl.datum='" . $overldat . "',
OverlGemeente='" . $overlpl . "',
Type='" . $Type . "',
BS='" . $BS . "',
Naam2='" . $Naam2 . "',
VNaam2='" . $VNaam2 . "',
Opmerking='" . $opmerk . "'
WHERE IDR='" . $Nummer . "'";
?>
- Ariën - op 15/10/2021 09:07:37


Wat enters in je query zijn ook niet overbodig. ;-)


Sorry, ik ben nog altijd maar een leerling, wat bedoel je daarmee? Ik heb graag een voorbeeld. Een voorbeeld zegt meer dan duizend woorden :-).

En backticks wat zijn dat?
Backticks zijn dit: `
En enters... Kijk maar naar de leesbaarheid van Frank zijn query. ;-)
Zijn die dingetje voor en achter de veldnamen

$sql = "UPDATE `rouwbriefnieuw` SET `Naam`= $Naam,`Voornaam`=$VNaam,`geb.datum`=$gebdat,`GebGemeente`=$gebpl ,`overl.datum`=$overldat,`OverlGemeente`=$overlpl,`Type`=$Type,`BS`=$BS,`Naam2`=$Naam2,`VNaam2`=$VNaam2,`Opmerking`= $opmerk WHERE `IDR`=$Nummer ";


Kwam er achter door dit te doen.

https://www.google.com/search?q=mysql+backticks+meaning
Dank u jullie allemaal. Ondertussen had ik het begrepen. Een paar dagen vakantie en jullie tips hebben wonderen gedaan samen met een extra foutje dat ik ontdekt heb.




Reageren