概述
我需要一种方法来正确清理我的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 )].
如果有大量文本数据的其他选项,我不会更改列的类型转换。
感谢您提供的任何帮助!!
答案 0 :(得分:2)
不要通过附加字符串来构建查询。使用绑定字段。请参阅:http://www.php.net/function.mssql-bind.php
如果您正在使用sqlsrv库(您应该使用),那么$params
变量位于:http://www.php.net/function.sqlsrv-query.php。