Adakah Penyata yang Disediakan Menghapuskan Keperluan untuk `mysql_real_escape_string()` dalam PHP?

Linda Hamilton
Lepaskan: 2024-11-04 11:34:01
asal
533 orang telah melayarinya

Do Prepared Statements Eliminate the Need for `mysql_real_escape_string()` in PHP?

Penyata Disediakan dan Melarikan Diri: Akta Pengimbangan

Apabila menggunakan pernyataan yang disediakan dalam PHP, adakah seseorang masih perlu menggunakan mysql_real_escape_string() untuk mengelakkan Suntikan SQL? Mari kita periksa pertanyaan khusus dan pelaksanaannya untuk menjawab soalan ini.

Pertanyaan dan Pelaksanaan

<code class="php">$consulta = $_REQUEST["term"] . "%";

$sql = $db->prepare('select location from location_job where location like ?');

$sql->bind_param('s', $consulta);
$sql->execute();
$sql->bind_result($location);

$data = array();

while ($sql->fetch()) {
    $data[] = array('label' => $location);
}
?>

**The Dilemma**

The provided query aims to fetch locations that match the term entered in the $_REQUEST["term"] variable. While the usage of a prepared statement is commendable for preventing SQL injections, the implementation raises a query: is mysql_real_escape_string() still necessary in this case?

**The Verdict: No, but a Refinement is Suggested**

When using prepared statements, as long as they are employed correctly, they effectively shield against SQL injections. In this instance, mysql_real_escape_string() is redundant. However, a minor improvement can enhance the code's clarity and efficiency.

Rather than using bind_param('s', $consulta), it's more straightforward to pass parameters through the execute method, especially when utilizing the '?' placeholder. The updated code would be:
</code>
Salin selepas log masuk

$sql->execute([$consulta]);

Mengapa Ia Penting

Pernyataan yang disediakan dengan pengikatan parameter memastikan data luaran tidak boleh memanipulasi pertanyaan SQL. Walau bagaimanapun, ingat bahawa pengikatan parameter SQL sahaja tidak menjamin paparan selamat dalam HTML. Untuk itu, adalah penting untuk menggunakan fungsi seperti htmlspecialchars() sebelum mengeluarkan hasil pertanyaan.

Atas ialah kandungan terperinci Adakah Penyata yang Disediakan Menghapuskan Keperluan untuk `mysql_real_escape_string()` dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!