Как экранировать строки в SQL Server, используя PHP? - PullRequest
86 голосов
/ 22 февраля 2009

Я ищу альтернативу mysql_real_escape_string() для SQL Server. addslashes() мой лучший вариант или есть другая альтернативная функция, которую можно использовать?

Редактировать : Альтернатива для mysql_error() также будет полезна.

Ответы [ 14 ]

0 голосов
/ 11 октября 2016

Если вы используете PDO, вы можете использовать метод PDO::quote.

0 голосов
/ 22 августа 2016

Для преобразования, чтобы вернуть HEX в SQL обратно в ASCII, вот решение, которое я получил (используя функцию из Chaos для кодирования в Hex)

function hexEncode($data) {
    if(is_numeric($data))
        return $data;
    $unpacked = unpack('H*hex', $data);
    return '0x' . $unpacked['hex'];
}
function hexDecode($hex) {
    $str = '';
    for($i=0;$i<strlen($hex);$i+=2) $str .= chr(hexdec(substr($hex,$i,2)));
    return $str;
}
$stringHex = hexEncode('Test String');
var_dump($stringHex);
$stringAscii = hexDecode($stringHex);
var_dump($stringAscii);
0 голосов
/ 17 февраля 2016

Предупреждение: эта функция была УДАЛЕНА в PHP 7.0.0.

http://php.net/manual/en/function.mssql-query.php

Для тех, кто все еще использует эти функции mssql_ *, имейте в виду, что они были удалены из PHP начиная с v7.0.0. Таким образом, это означает, что вам в конечном итоге придется переписать код модели, чтобы использовать библиотеку PDO, sqlsrv_ * и т. Д. Если вы ищете что-то с помощью метода «цитирования / экранирования», я бы порекомендовал PDO.

Альтернативы этой функции: PDO :: query (), sqlsrv_query () и odbc_exec ()

0 голосов
/ 02 марта 2009

Вы можете свернуть свою собственную версию mysql_real_escape_string (и улучшить ее) с помощью следующего регулярного выражения: [\000\010\011\012\015\032\042\047\134\140]. При этом учитываются следующие символы: ноль, возврат на одну позицию, горизонтальная табуляция, новая строка, возврат каретки, замена, двойная кавычка, одинарная кавычка, обратный слеш, серьезный акцент. Backspace и горизонтальная вкладка не поддерживаются mysql_real_escape_string.

...