$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']."'";



Als nu $german['product_name_de'] == ' 's werelds ' Heb ik een probleem door de quote voor de s......

Hoe nu?
(er vanuitgaande dat je MySQL gebruikt)
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...
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.
Thanks!!! dit werkt:

product_name_de='".mysql_real_escape_string($german['product_name_de'])."'

Reageren