[php] vreemde sql error

Status
Niet open voor verdere reacties.

djwouter12

Nieuwe gebruiker
Lid geworden
3 feb 2012
Berichten
4
hallo helpmij freaks,

ben weer bezig met een scriptje maar hij blijft een sql error geven... meschien dat jullie zien wat er mis is met mijn scriptje

hier het script :

PHP:
$result = mysql_query("SELECT * FROM `wp_formbuilder_results`");

while($row = mysql_fetch_array($result))
  {
  $xmldata = $row['xmldata'];
  $rest = substr($xmldata, 43);
$a = simplexml_load_string($rest);
$a1 = simplexml_load_string($rest);
if(isset($_GET['del'])) {
	if($_GET['del'] == "send")
	{
		
?>
 <?
 $sql = "INSERT INTO `leden` (Naam, Achternaam, Geslacht, Straatnaam_en_huisnummer, Postcode, plaatsnaam, Geboortedatum, Emailadres, Thuistelefoonnummer, Mobiel_nummer)
VALUES (". $a1->Naam .", ". $a1->Achternaam .", ". $a1->Geslacht .", ". $a1->Straatnaam_en_huisnummer .", ". $a1->Postcode .", ". $a1->plaatsnaam .", ". $a1->Geboortedatum .", ". $a1->Emailadres .", ". $a1->Thuistelefoonnummer .", ". $a1->Mobiel_nummer .")";

$result=mysql_query($sql);

if($result){
?>
<div style="background-color:#09C; width:100%; height:40px; top:0px; position:absolute;"><p> verplaast</p></div>
<?php 
}

else {
?>
<div style="background-color:#09C; width:100%; height:40px; top:0px; position:absolute;"><p> <?php echo mysql_error(); ?></p></div>
<?php
}
?> 
<?php 
	}
}
?>

met de volgende error.

Code:
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 '****, 5243 XL, ********, 24-03-1993,

de sterretjes waren gevoelige info dus deze heb ik weg gehaald.

Gr wouter
 
Als je strings naar de database wilt sturen moet MySQL dat natuurlijk wel begrijpen ;)

Nu is dit je query zoiets:
[sql]
INSERT INTO `leden` (
Naam,
Achternaam,
Geslacht,
Straatnaam_en_huisnummer,
Postcode,
plaatsnaam,
Geboortedatum,
Emailadres,
Thuistelefoonnummer,
Mobiel_nummer
) VALUES (
Pieter,
Post,
m,
Adres 17,
1234 AB,
01-01-2001,
pieter@post.nl,
1234-567890,
06123456789
)[/sql]
Je ziet al aan de syntax highlighting dat er iets niet goed gaat :) Sowieso heeft MySQL moeite met spaties.
Je zult dus quotes om je input moeten zetten in dit geval.
[sql]
INSERT INTO `leden` (
Naam,
Achternaam,
Geslacht,
Straatnaam_en_huisnummer,
Postcode,
plaatsnaam,
Geboortedatum,
Emailadres,
Thuistelefoonnummer,
Mobiel_nummer
) VALUES (
'Pieter',
'Post',
'm',
'Adres 17',
'1234 AB',
'01-01-2001',
'pieter@post.nl',
'1234-567890',
'06123456789'
)
[/sql]

Een nog betere oplossing is om van mysql_*-functies af te stappen en het via MySQLi of PDO te doen en gebruik te maken van prepared statements.
 
Bestaan de volgende veldnamen wel in je database en zijn ze exact zoals je ze hebt geschreven?
"Naam, Achternaam, Geslacht, Straatnaam_en_huisnummer, Postcode, plaatsnaam, Geboortedatum, Emailadres, Thuistelefoonnummer, Mobiel_nummer"

Ik zie namelijk dat plaatsnaam door jouw met een kleine letter is en de rest begint met een hoofdletter.
 
Zoals Da Devil al aangeeft
Een nog betere oplossing is om van mysql_*-functies af te stappen en het via MySQLi of PDO te doen en gebruik te maken van prepared statements.

Zou ik je ook adviseren om eens naar prepared statements te kijken. Het is misschien even wennen maar het maakt het je als programmeur makkelijk. Je hoeft namelijk niet meer zelf characters te escapen en voorkomt sql injection.

Een voorbeeld in jou script is bijvoorbeeld een plaatsnaam welke begint met een komma --> 'S gravenhage. Die kapt je query af met alle gevolgen van dien.
 
Je hoeft namelijk niet meer zelf characters te escapen en voorkomt sql injection.
Dat eerste is niet altijd waar. Als een formulier gebruikers inhoud op de site laat zetten, zoals op dit forum, moet je nog steeds filteren om te voorkomen dat mensen malafide javascript code op je site zetten.
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan