Mijn Insert query loopt vast op volgende string:

2″

Nochtans gebruik ik het volgende:
$string = mysql_real_escape_string($string);

Maar blijkbaar is dit niet genoeg want zodra er schuine quotes in de string staan, loopt heel de SQL query vast en krijg ik errors dat de query niet goed gevormd zou zijn.

Hoe los je zoiets op?
om te beginnen is het al fout om mysql_real_escape_string terug te geven aan een php-variabele!!

de mysql_real_escape_string gebruik je alleen binnen de sql-statements!

En als je tegen dit soort problemen aanloopt dan:
1. post de query welke uitgevoerd wordt
2. post de foutmelding die erbij hoort

Want je zit nu ergens naar te kijken wat niet tot het probleem behoort!
Het voorbeeld maakt eigenlijk niet uit.

Er zou toch een soort van universele oplossing moeten zijn om strings met eender welke inhoud veilig op te kunnen slaan via een insert query.

Ik heb altijd gedacht dat het genoeg was om de functie mysql_real_escape_string() te gebruiken, maar blijkbaar is dit niet voldoende. Welke andere functie(s) zijn er nog nodig ?


EDIT:
Hier is een voorbeeldje van een query:
INSERT INTO
wordlogger (search, word, count)
VALUES ('car+name','*Saveââ??·ââ??·',1) ON DUPLICATE KEY UPDATE count = count + 1 ;

==> Dit geeft dus een MySQL syntax error voor het gedeelte waar *Saveââ??·ââ??· werd ingevuld
Dat is wel voldoende. Ik denk eerder dat je het verkeerd toepast.
je moet mysql_real_escape_string in de query zelf toepassen, en niet in daarbuiten.
Victor - op 26/05/2011 21:43:57

je moet mysql_real_escape_string in de query zelf toepassen, en niet in daarbuiten.


Dit maakt toch niet uit?
Of ik nu rechtstreeks
mysql_real_escape_string($var) gebruik, of
$var = mysql_real_escape_string($var)

Hierbij is het resultaat toch hetzelfde?
omdat het stomzinnig is om onnodig vars te kopieren
Vincent Huisman op 26/05/2011 21:52:09

omdat het stomzinnig is om onnodig vars te kopieren


Maar het probleem van dit topic heeft er dus weinig mee te maken.
Deleted.
Hoe pas je die code dan toe?
		
$searchTerm = clean($searchTerm);
$word = clean($word);
	
$query = "	INSERT INTO ".WORDLOGGER." (search, word, count)
			VALUES ('".$searchTerm."','".$word."',1)
			ON DUPLICATE KEY UPDATE count = count + 1
		;";
				
$this->objMySqlConnection->insert($query);



De clean-functie bevat de mysql_real_escape_string()

Deze query werkt meestal feilloos, behalve dus bij bovengenoemde voorbeelden, dan loopt hij vast.

De error is:
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 ''*Saveââ' at line 2

Maar dus even herhalen: deze query loopt in een loopje en word constant succesvol uitgevoerd, tot hij dit soort van string tegenkomt

Reageren