Как выйти из строк в SQL Server с помощью PHP?

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

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

88
задан Peter Mortensen 15 July 2019 в 15:07
поделиться

3 ответа

addslashes() не полностью соответствует, но mssql пакет PHP не обеспечивает достойной альтернативы. Ужасное, но полностью общее решение кодирует данные шестнадцатеричной строкой байтов, т.е.

$unpacked = unpack('H*hex', $data);
mssql_query('
    INSERT INTO sometable (somecolumn)
    VALUES (0x' . $unpacked['hex'] . ')
');

Абстрактный, который был бы:

function mssql_escape($data) {
    if(is_numeric($data))
        return $data;
    $unpacked = unpack('H*hex', $data);
    return '0x' . $unpacked['hex'];
}

mssql_query('
    INSERT INTO sometable (somecolumn)
    VALUES (' . mssql_escape($somevalue) . ')
');

mysql_error() эквивалентный mssql_get_last_message().

73
ответ дан chaos 24 November 2019 в 07:35
поделиться

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

-2
ответ дан Scott 24 November 2019 в 07:35
поделиться

Вы могли изучить Библиотека PDO . Можно использовать подготовленные операторы с PDO, который автоматически выйдет из любых неверных символов в строках, если Вы сделаете подготовленные операторы правильно. Это для PHP 5, только я думаю.

10
ответ дан alex 24 November 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: