Rumah > pangkalan data > tutorial mysql > Bagaimana untuk membenamkan pembolehubah PHP dengan selamat dalam pernyataan MySQL?

Bagaimana untuk membenamkan pembolehubah PHP dengan selamat dalam pernyataan MySQL?

Mary-Kate Olsen
Lepaskan: 2025-01-25 16:56:10
asal
372 orang telah melayarinya

How to Safely Embed PHP Variables in MySQL Statements?

pembolehubah php tertanam dalam pernyataan mysql

Meningkatkan pernyataan SQL dengan pembolehubah PHP boleh menghasilkan pertanyaan secara dinamik. Berikut adalah masalah yang anda hadapi:

Untuk menyelesaikan kesilapan ini, sila ikuti panduan berikut:
<code class="language-php">$type = 'testing';
mysql_query("INSERT INTO contents (type, reporter, description) 
     VALUES($type, 'john', 'whatever')");</code>
Salin selepas log masuk

<.> 1. Gunakan pernyataan pra -proses

Mana -mana pembolehubah yang menunjukkan teks SQL (rentetan, nombor) dalam pernyataan adalah wajib. Berikut adalah alur kerja:

Gunakan tempat menduduki:

Pembolehubah digantikan dalam pertanyaan SQL ke simbol penempatan.

    Bersedia untuk pertanyaan:
  • Gunakan kaedah pada objek sambungan pangkalan data.
  • Bind Variables:
  • Gunakan untuk mengaitkan dengan nilai pembolehubah. prepare() Jalankan:
  • Gunakan
  • Lakukan pertanyaan pra -proses. bind_param() di mysqli (Php 8.2):
  • di mysqli (versi php yang lebih tua): execute()

dalam pdo:

<.> 2. Melaksanakan penapisan putih
<code class="language-php">$type = 'testing';
$reporter = "John O'Hara";
$description = 'whatever'; //添加了description变量
$sql = "INSERT INTO contents (type,reporter,description) VALUES (?,?,?)"; //修改了占位符数量
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("sss", $type, $reporter, $description); //修改了参数类型和数量
$stmt->execute();</code>
Salin selepas log masuk
Salin selepas log masuk

Untuk bahagian pertanyaan seperti kata kunci, pengenal atau pengendali, sila gunakan kaedah senarai putih. Tapis pembolehubah ini melalui senarai nilai yang dibenarkan yang telah ditetapkan:

<code class="language-php">$type = 'testing';
$reporter = "John O'Hara";
$description = 'whatever'; //添加了description变量
$sql = "INSERT INTO contents (type,reporter,description) VALUES (?,?,?)"; //修改了占位符数量
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("sss", $type, $reporter, $description); //修改了参数类型和数量
$stmt->execute();</code>
Salin selepas log masuk
Salin selepas log masuk
Pastikan untuk memformat pengenalpastian dengan betul mengikut sintaks pangkalan data (contohnya, nombor anti -atraksi MySQL). Kemudian, pembolehubah ini disertakan dengan selamat dalam rentetan SQL:

Penapis pernyataan pra -proses dan senarai putih, anda boleh menghalang SQL secara berkesan daripada menyuntik serangan, dan mengintegrasikan pembolehubah PHP dengan selamat ke dalam pertanyaan MySQL anda. Sila ambil perhatian bahawa fungsi

telah ditinggalkan. Kod misalnya telah dikemas kini untuk mencerminkan ini dan membaiki kesilapan dalam contoh asal.
<code class="language-php">$type = 'testing';
$reporter = "John O'Hara";
$description = 'whatever'; //添加了description变量
$sql = "INSERT INTO contents (type,reporter,description) VALUES (?,?,?)"; //修改了占位符数量
$stmt = $pdo->prepare($sql);
$stmt->execute([$type, $reporter, $description]); //修改了参数数量</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk membenamkan pembolehubah PHP dengan selamat dalam pernyataan MySQL?. 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