
Termasuk Pembolehubah PHP dalam Penyata MySQL
Anda menghadapi masalah apabila memasukkan nilai ke dalam jadual menggunakan pembolehubah PHP dalam pernyataan VALUES anda . Memahami pendekatan yang betul untuk menyepadukan pembolehubah PHP ke dalam pernyataan MySQL adalah penting.
Gunakan Penyata Disediakan
Memasukkan literal data (rentetan SQL atau nombor) ke dalam pernyataan MySQL memerlukan penggunaan pernyataan yang disediakan. Ia melibatkan:
- Menggantikan pembolehubah dengan ruang letak dalam pernyataan SQL anda
- Menyediakan pertanyaan yang disemak
- Mengikat pembolehubah kepada pemegang tempat
- Melaksanakan pertanyaan
Menambah Literal Data dengan Mysqli
Dalam PHP 8.2, langkah-langkah ini boleh digabungkan menjadi satu panggilan:
1 2 3 4 | $type = 'testing' ;
$reporter = "John O'Hara" ;
$sql = "INSERT INTO contents (type,reporter,description) VALUES ('whatever',?,?)" ;
$mysqli ->execute_query( $sql , [ $reporter , $description ]);
|
Salin selepas log masuk
Untuk versi PHP yang lebih lama:
1 2 3 4 5 6 | $type = 'testing' ;
$reporter = "John O'Hara" ;
$sql = "INSERT INTO contents (type,reporter,description) VALUES ('whatever',?,?)" ;
$stmt = $mysqli ->prepare( $sql );
$stmt ->bind_param( "ss" , $reporter , $description );
$stmt ->execute();
|
Salin selepas log masuk
Menambah Huruf Data dengan PDO
PDO menawarkan pendekatan yang diperkemas:
1 2 3 4 5 | $type = 'testing' ;
$reporter = "John O'Hara" ;
$sql = "INSERT INTO contents (type,reporter,description) VALUES ('whatever',?,?)" ;
$stmt = $pdo ->prepare( $sql );
$stmt ->execute([ $reporter , $description ]);
|
Salin selepas log masuk
Pembolehubah Penapis untuk Bahagian Pertanyaan Lain
Pembolehubah yang mewakili pertanyaan selain daripada literal (kata kunci, pengecam) hendaklah ditapis melalui a senarai putih. Ini menghalang pemasukan nilai yang tidak diingini.
Sebagai contoh, untuk menapis nama medan berdasarkan input pengguna:
1 2 3 4 5 6 | $orderby = $_GET [ 'orderby' ] ?: "name" ;
$allowed = [ "name" , "price" , "qty" ];
$key = array_search ( $orderby , $allowed , true);
if ( $key === false) {
throw new InvalidArgumentException( "Invalid field name" );
}
|
Salin selepas log masuk
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Pembolehubah PHP dengan Selamat dalam Penyata MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!