Apabila berinteraksi dengan Pelayan SQL menggunakan PHP, adalah penting untuk memastikan bahawa sebarang data yang dibekalkan pengguna dilepaskan dengan betul, menghalang SQL serangan suntikan. Walaupun mysql_real_escape_string() biasanya digunakan untuk MySQL, ia tidak tersedia untuk SQL Server.
Tidak seperti MySQL, SQL Server tidak menyediakan fungsi khusus untuk rentetan melarikan diri. Walau bagaimanapun, anda boleh mencipta fungsi anda sendiri:
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);
Fungsi ini mengekod data sebagai rentetan bait heksadesimal, memastikan sebarang aksara khas dilepaskan.
Untuk mendapatkan semula mesej ralat daripada SQL Pelayan, gunakan mssql_get_last_message():
$error_message = mssql_get_last_message();
Fungsi ini mendapatkan semula mesej ralat terakhir yang dijana oleh pelaksanaan pertanyaan SQL Server.
Menggabungkan fungsi ini, anda boleh memasukkan input pengguna ke dalam jadual SQL Server dengan selamat:
$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 }
Atas ialah kandungan terperinci Bagaimana untuk Melarikan Diri String dengan Selamat dalam SQL Server Apabila Menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!