Некоторое время назад я написал эквивалентную функцию delphi, следуя документации MySql о функции mysql_real_escape_string
.
Строка в from кодируется в экранированную строку SQL,с учетом текущего набора символов соединения.Результат помещается в и добавляется завершающий нулевой байт.Кодируются следующие символы: «\», «'», «» », NUL (ASCII 0),« \ n »,« \ r »и Control + Z. Строго говоря, MySQL требует только того, чтобы использовалась обратная косая черта и символ кавычек длязаключать в кавычки строку в запросе. mysql_real_escape_string () заключает в кавычки другие символы, чтобы их было легче читать в файлах журналов
очевидно, что часть ..taking into account the current character set of the connection
здесь игнорируется.
function StringReplaceExt(const S : string; OldPattern, NewPattern: array of string; Flags: TReplaceFlags):string;
var
i : integer;
begin
Assert(Length(OldPattern)=(Length(NewPattern)));
Result:=S;
for i:= Low(OldPattern) to High(OldPattern) do
Result:=StringReplace(Result,OldPattern[i], NewPattern[i], Flags);
end;
function mysql_real_escape_string(const unescaped_string : string ) : string;
begin
Result:=StringReplaceExt(unescaped_string,
['\', #39, #34, #0, #10, #13, #26], ['\\','\'#39,'\'#34,'\0','\n','\r','\Z'] ,
[rfReplaceAll]
);
end;