2

概述

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

尝试的解决方案和问题

经过研究,我在 SO 上找到了这个帖子。它工作得很好,直到我需要插入到 type 的列中text。当尝试在其中插入 HEX 文字时,我得到:

Operand type clash: varbinary is incompatible with text

我需要的

所以,我需要另一种不涉及十六进制文字的可靠消毒策略。或者在将 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 )].

如果有大量文本数据的另一种选择,我不会改变列的类型转换。

感谢您的任何帮助,您可以提供!!

4

1 回答 1

2

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

$params变量:http : //www.php.net/function.sqlsrv-query.php 如果您使用的是 sqlsrv 库(您应该这样做)。

于 2011-09-19T22:55:23.770 回答