PHP を使用して SQL Server と対話する場合、ユーザーが指定したデータが適切にエスケープされ、SQL がエスケープされるのを防ぐことが重要です。注射攻撃。 mysql_real_escape_string() は MySQL で一般的に使用されますが、SQL Server では使用できません。
MySQL とは異なり、SQL Server は専用の関数を提供しません。文字列のエスケープ。ただし、独自の関数を作成することもできます。
function mssql_escape($data) { if (is_numeric($data)) { return $data; } $unpacked = unpack('H*hex', $data); return '0x' . $unpacked['hex']; } $escaped_value = mssql_escape($user_input);
この関数は、データを 16 進バイト文字列としてエンコードし、特殊文字が確実にエスケープされるようにします。
SQL Server からエラー メッセージを取得するには、次を使用します。 mssql_get_last_message():
$error_message = mssql_get_last_message();
この関数は、SQL Server クエリの実行によって生成された最後のエラー メッセージを取得します。
これらの関数を組み合わせると、安全に挿入できますSQL Server テーブルへのユーザー入力:
$connection = mssql_connect(...); $query = 'INSERT INTO sometable (somecolumn) VALUES (' . mssql_escape($user_input) . ')'; $result = mssql_query($query, $connection); if (!$result) { $error_message = mssql_get_last_message(); // Retrieve error message }
以上がPHP 使用時に SQL Server で文字列を安全にエスケープする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。