Санитарная обработка MSSQL (и / или добавление HEX в столбец TEXT) - PullRequest
2 голосов
/ 20 сентября 2011

Обзор

Мне нужен способ надлежащей очистки моих данных MSSQL.Мы все знаем, addslashes() и htmlentities() не обрезают его.

Попытка решения и проблема

После исследования я обнаружил эту тему здесь, на ТАК.Он работал отлично, пока мне не нужно было вставить в столбец типа text.При попытке вставить в него HEX-литерал, я получаю:

Operand type clash: varbinary is incompatible with text

Что мне нужно

Итак, мне нужно либо другое телостратегия дезинфекции, в которой не используются литералы HEXИЛИ Мне нужна помощь в преодолении этой ошибки при вставке HEX в text.

Мой текущий метод:

public static function dbSanitize( $str ){
    if( is_numeric( $str ) )
        return $str;
    $unpacked = unpack( 'H*hex', $str );
    return '0x' . $unpacked['hex'];
}

Мой запрос

[INSERT INTO myTable ( C1,Text2,C3,C4,C5,C6,Text7,C8 ) VALUES ( 111,0x3c703e0a0932323232323c2f703e0a,1,1,1,0,0x5b7b2274797065223a2274657874222c226c6162656c223a224669656c64204e616d65222c2264657363223a22222c224669656c644944223a2239373334313036343937227d5d,1316471975 )].

Я не изменяю приведение типа столбца, если есть другой вариант для больших объемов текстовых данных.

Спасибо за любую помощь, которую вы можете предоставить !!

1 Ответ

2 голосов
/ 20 сентября 2011

Не создавайте запрос, добавляя строки. Используйте связанные поля. Смотри: http://www.php.net/function.mssql-bind.php

Или переменная $params в: http://www.php.net/function.sqlsrv-query.php, если вы используете библиотеку sqlsrv (что вам следует).

...