sql >> データベース >  >> RDS >> Sqlserver

PHPを使用してSQLServerで文字列をエスケープする方法は?

    addslashes() 完全に適切ではありませんが、PHPのmssqlパッケージは適切な代替手段を提供していません。醜いが完全に一般的な解決策は、データを16進バイト文字列としてエンコードすることです。つまり

    $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()



    1. BrentOzarとPinalDaveによるSQLServerのパフォーマンスに関するアドバイス

    2. PostgreSQLで(タイムゾーンなしで)現在の時刻を取得する方法

    3. SQL ServerでのDATEADD()の例

    4. AndroidでRoomを使用するときに最新バージョンのSqliteaarをインストールする方法