query werkt niet meer sinds PHP/MySQL 5
sinds mijn hostingprovider is overgestapt op PHP 5 en MySQL 5 werkt een aantal queries in mijn scripts niet meer, een voorbeeld:
als ik de volgende zin wil toevoegen aan mijn database:
"Zaterdagavond geven zij een aantal van hun cd's weg."
en ik gebruik de volgende query:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
if(!empty($_POST['titel']) AND !empty($_POST['bericht'])) {
$ins = "INSERT INTO nieuws (id, datum, titel, bericht) VALUES ('', '".date("d-m-Y H:i")."', '".$_POST['titel']."', '".$_POST['bericht']."')";
$inst = mysql_query($ins) or die( mysql_error());
echo "<script type=\"text/javascript\">alert(\"Het nieuwsbericht is succesvol toegevoegd.\");</script>";
echo "<meta http-equiv=\"refresh\" content=\"0;URL=nieuws.php\">";
}
?>
if(!empty($_POST['titel']) AND !empty($_POST['bericht'])) {
$ins = "INSERT INTO nieuws (id, datum, titel, bericht) VALUES ('', '".date("d-m-Y H:i")."', '".$_POST['titel']."', '".$_POST['bericht']."')";
$inst = mysql_query($ins) or die( mysql_error());
echo "<script type=\"text/javascript\">alert(\"Het nieuwsbericht is succesvol toegevoegd.\");</script>";
echo "<meta http-equiv=\"refresh\" content=\"0;URL=nieuws.php\">";
}
?>
dan wordt het bericht niet in de DB gezet en krijg ik de volgende error:
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 's weg.')' at line 1
hij blijft dus hangen op de apostrof-s, weet iemand hoe ik dit probleem op kan lossen?
Gewijzigd op 01/01/1970 01:00:00 door Thomas M
er bestaat iest met een uitzonderingsregel html special caracter eod.
of met stringreplace ' vervangen door &nogwat
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
if(!empty($_POST['titel']) AND !empty($_POST['bericht'])) {
$ins = "INSERT INTO nieuws (id, datum, titel, bericht) VALUES ('', '".date("d-m-Y H:i")."', '".$_POST['titel']."', '".htmlspecialchars($_POST['bericht'])."')";
$inst = mysql_query($ins) or die( mysql_error());
echo "<script type=\"text/javascript\">alert(\"Het nieuwsbericht is succesvol toegevoegd.\");</script>";
echo "<meta http-equiv=\"refresh\" content=\"0;URL=nieuws.php\">";
}
?>
if(!empty($_POST['titel']) AND !empty($_POST['bericht'])) {
$ins = "INSERT INTO nieuws (id, datum, titel, bericht) VALUES ('', '".date("d-m-Y H:i")."', '".$_POST['titel']."', '".htmlspecialchars($_POST['bericht'])."')";
$inst = mysql_query($ins) or die( mysql_error());
echo "<script type=\"text/javascript\">alert(\"Het nieuwsbericht is succesvol toegevoegd.\");</script>";
echo "<meta http-equiv=\"refresh\" content=\"0;URL=nieuws.php\">";
}
?>
maar ik krijg nog steeds dezelfde foutmelding.
Iemand andere suggesties?
mysql_real_escape_string()
Edit:
htmlspecialchars() zal nooit voldoen, omdat deze niet alle html tekens omvormt, daarvoor gebruik je htmlentites, maar dan nog worden de quotes niet omgezet, daarvoor moet je ENT_QUOTES als 2e parameter opgeven.
Gewijzigd op 01/01/1970 01:00:00 door Bo az
Dat werkt wel, bedankt :)
of addslashes/stripslashes