我正在寻找mysql_real_escape_string()SQL Server 的替代方案。是addslashes()我最好的选择,还是可以使用另一种替代功能?
mysql_real_escape_string()
addslashes()
的替代方法mysql_error()也将很有用。
mysql_error()
addslashes()还不够,但是PHP的mssql软件包没有提供任何不错的选择。丑陋但完全通用的解决方案是将数据编码为十六进制字节串,即
$unpacked = unpack('H*hex', $data); mssql_query(' INSERT INTO sometable (somecolumn) VALUES (0x' . $unpacked['hex'] . ') ');
摘要如下:
function mssql_escape($data) { if(is_numeric($data)) return $data; $unpacked = unpack('H*hex', $data); return '0x' . $unpacked['hex']; } mssql_query(' INSERT INTO sometable (somecolumn) VALUES (' . mssql_escape($somevalue) . ') ');
mysql_error()等效为mssql_get_last_message()。
mssql_get_last_message()