Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Memasukkan Pembolehubah PHP dengan Selamat dalam Penyata INSERT MySQL?

Bagaimana untuk Memasukkan Pembolehubah PHP dengan Selamat dalam Penyata INSERT MySQL?

Barbara Streisand
Lepaskan: 2024-12-21 18:03:23
asal
869 orang telah melayarinya

How to Safely Include PHP Variables in MySQL INSERT Statements?

Termasuk Pembolehubah PHP dalam Penyata MySQL

Dalam senario ini, anda menghadapi isu semasa memasukkan nilai ke dalam jadual "kandungan", khususnya apabila menggunakan pembolehubah PHP "$type" dalam bahagian "VALUES" pada pernyataan MySQL. Mari kita mendalami pendekatan yang sesuai.

1. Gunakan Penyata Disediakan (Disyorkan)

Kaedah ini menangani 99% pertanyaan, termasuk pertanyaan anda. Sebarang pembolehubah yang mewakili literal data SQL (rentetan atau nombor) mesti digabungkan melalui pernyataan yang disediakan, tanpa pengecualian. Nilai statik, walau bagaimanapun, boleh dimasukkan seperti sedia ada.

Proses penyediaan memerlukan empat peringkat:

  • Tentukan ruang letak untuk pembolehubah dalam pernyataan SQL.
  • Sediakan pertanyaan diubah suai.
  • Ikat pembolehubah kepada masing-masing pemegang tempat.
  • Laksanakan pertanyaan.

Begini cara ia berfungsi dalam pemacu pangkalan data yang berbeza:

mysqli dengan PHP 8.2 :

$sql = "INSERT INTO contents (type, reporter, description) VALUES ('whatever', ?, ?)";
$mysqli->execute_query($sql, [$reporter, $description]);
Salin selepas log masuk

mysqli dengan PHP Terdahulu Versi:

$stmt = $mysqli->prepare("INSERT INTO contents (type, reporter, description) VALUES ('whatever', ?, ?)");
$stmt->bind_param("ss", $reporter, $description);
$stmt->execute();
Salin selepas log masuk

PDO:

$sql = "INSERT INTO contents (type, reporter, description) VALUES ('whatever', ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$reporter, $description]);
Salin selepas log masuk

2. Laksanakan Penapisan Senarai Putih untuk Bahagian Pertanyaan

Jika anda perlu memasukkan pembolehubah yang mewakili bahagian tertentu pertanyaan SQL, seperti kata kunci, nama jadual atau medan atau pengendali, gunakan "senarai putih" untuk memastikan kesahihannya.

Sebagai contoh, jika pembolehubah mewakili susunan mengikut medan:

$allowed = ["name", "price", "qty"];
$key = array_search($orderby, $allowed, true);
if ($key === false) { throw new InvalidArgumentException("Invalid field name"); }
Salin selepas log masuk

Begitu juga, semak untuk arahan pesanan yang sah:

$allowed = ["ASC", "DESC"];
$key = array_search($direction, $allowed, true);
if ($key === false) { throw new InvalidArgumentException("Invalid ORDER BY direction"); }
Salin selepas log masuk

Setelah disahkan, sediakan Rentetan pertanyaan dan ingat untuk melepaskan pengecam dengan betul mengikut sintaks MySQL:

$query = "SELECT * FROM `table` ORDER BY `$orderby` $direction";
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Pembolehubah PHP dengan Selamat dalam Penyata INSERT 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