quote in query
Code (php)
1
2
3
4
5
2
3
4
5
$sql="INSERT INTO products_de (product_id,product_name_de,product_description_de,description_de,information_de) VALUES
($id,'".$german['product_name_de']."','".$german['product_description_de']."','".$german['description_de']."','".$german['information_de']."')
ON DUPLICATE KEY UPDATE
product_name_de='".$german['product_name_de']."',product_description_de='".$german['product_description_de']."',
description_de='".$german['description_de']."', information_de='".$german['information_de']."'";
($id,'".$german['product_name_de']."','".$german['product_description_de']."','".$german['description_de']."','".$german['information_de']."')
ON DUPLICATE KEY UPDATE
product_name_de='".$german['product_name_de']."',product_description_de='".$german['product_description_de']."',
description_de='".$german['description_de']."', information_de='".$german['information_de']."'";
Als nu $german['product_name_de'] == ' 's werelds ' Heb ik een probleem door de quote voor de s......
Hoe nu?
Gebruik een _real_escape_string() functie om de DATA-delen binnen je SQL te ontdoen van enige speciale betekenis binnen die SQL (zoals quotes).
Ingeval je mysql gebruikt is dit mysql_real_escape_string($data).
Ingeval je mysqli gebruikt is dit mysqli_real_escape_string($dbLink, $data) (procedureel) of $dbLink->real_escape_string($data) (object georiënteerd)
EDIT: voor het correct functioneren van (i.h.a.) escaping is het van cruciaal belang dat je werkt met de juiste (en bij voorkeur één) character encoding. Als je tabellen de UTF-8 encodering gebruiken is het zaak dat je bij het maken van een verbinding de juiste character encoding kiest. Dit doe je met een _set_charset() functie.
Als er al data in je database zit, dan is dit mogelijk gedaan met een verkeerde aanname over de te gebruiken character encoding. Mogelijk kan deze toevoeging (van _set_charset()) ertoe leiden dat data verkeerd wordt weergegeven, maar als hier sprake van is dan wil dit zeggen dat de data eigenlijk al verkeerd in je database zat...
Gewijzigd op 03/03/2015 14:17:47 door Thomas van den Heuvel
Thomas van den Heuvel op 03/03/2015 14:01:27:
Ingeval je mysqli gebruikt is dit mysql_real_escape_string($dbLink, $data) (procedureel) of $dbLink->real_escape_string($data) (object georiënteerd)
Moet dit niet mysqli_real_escape_string($dbLink, $data) zijn ?
Jawel. Zal het aanpassen. Maar als je dit foute voorbeeld zou overnemen dan zie je ook meteen dat dit niet werkt.