Rumah > pembangunan bahagian belakang > tutorial php > Bolehkah Penyata Disediakan PHP PDO Menggunakan Parameter untuk Nama Jadual atau Lajur?

Bolehkah Penyata Disediakan PHP PDO Menggunakan Parameter untuk Nama Jadual atau Lajur?

DDD
Lepaskan: 2025-01-03 07:33:40
asal
476 orang telah melayarinya

Can PHP PDO Prepared Statements Use Parameters for Table or Column Names?

Bolehkah Parameter Menggantikan Nama Jadual atau Lajur dalam Penyata PDO PHP?

Adalah mustahil untuk menghantar nama jadual sebagai parameter kepada pernyataan PDO yang disediakan. Pertimbangkan kod berikut yang cuba berbuat demikian:

$stmt = $dbh->prepare('SELECT * FROM :table WHERE 1');
if ($stmt->execute(array(':table' => 'users'))) {
    var_dump($stmt->fetchAll());
}
Salin selepas log masuk

Pendekatan ini akan mengakibatkan ralat, kerana nama jadual dan lajur tidak boleh digantikan dengan parameter.

Pemasukan Selamat bagi Nama Jadual ke dalam Pertanyaan SQL

Untuk memasukkan nama jadual ke dalam pertanyaan SQL dengan selamat, pendekatan alternatif diperlukan. Elakkan memasukkan input pengguna secara langsung ke dalam pertanyaan, seperti:

$sql = "SELECT * FROM $table WHERE 1"
Salin selepas log masuk

Sebaliknya, pertimbangkan untuk menapis dan membersihkan input. Satu kaedah melibatkan menghantar parameter ringkas kepada fungsi yang akan melaksanakan pertanyaan secara dinamik. Pernyataan suis() kemudiannya boleh digunakan untuk menyenarai putih nama jadual yang sah. Contohnya:

function buildQuery( $get_var ) 
{
    switch($get_var)
    {
        case 1:
            $tbl = 'users';
            break;
    }

    $sql = "SELECT * FROM $tbl";
}
Salin selepas log masuk

Dengan meninggalkan kes lalai atau menggunakan yang memaparkan mesej ralat, anda menjamin bahawa hanya nilai yang diingini akan digunakan.

Atas ialah kandungan terperinci Bolehkah Penyata Disediakan PHP PDO Menggunakan Parameter untuk Nama Jadual atau Lajur?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan