sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo escapar cadenas en SQL Server usando PHP?

addslashes() no es del todo adecuado, pero el paquete mssql de PHP no proporciona ninguna alternativa decente. La solución fea pero completamente general es codificar los datos como una cadena de bytes hexadecimal, es decir,

$unpacked = unpack('H*hex', $data);
mssql_query('
    INSERT INTO sometable (somecolumn)
    VALUES (0x' . $unpacked['hex'] . ')
');

Abstraído, eso sería:

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() equivalente es mssql_get_last_message() .