清理MSSQL(& /或将HEX放入TEXT列)

时间:2011-09-19 22:52:34

标签: php sql-server text sanitization varbinary

概述

我需要一种方法来正确清理我的MSSQL数据。我们都知道addslashes()htmlentities()没有削减它。

尝试解决方案&问题

经过研究,我在SO上找到this thread。它工作得很好,直到我需要插入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 个答案:

答案 0 :(得分:2)

不要通过附加字符串来构建查询。使用绑定字段。请参阅:http://www.php.net/function.mssql-bind.php

如果您正在使用sqlsrv库(您应该使用),那么$params变量位于:http://www.php.net/function.sqlsrv-query.php