概要
MSSQLデータを適切にサニタイズする方法が必要です。私たちは皆知っaddslashes()
ていて、htmlentities()
それを切りません。
試みられた解決策と問題
調査した後、私はこのスレッドをここSOで見つけました。タイプの列に挿入する必要があるまで、それはうまく機能しました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 )].
大量のテキストデータに別のオプションがある場合は、列の型キャストを変更するだけです。
あなたが提供できるどんな助けにも感謝します!!