Rumah > pembangunan bahagian belakang > tutorial php > Bolehkah Parameter PDO Digunakan untuk Nama Jadual atau Lajur dalam Pertanyaan SQL?

Bolehkah Parameter PDO Digunakan untuk Nama Jadual atau Lajur dalam Pertanyaan SQL?

Linda Hamilton
Lepaskan: 2024-12-25 03:20:21
asal
852 orang telah melayarinya

Can PDO Parameters Be Used for Table or Column Names in SQL Queries?

Parameter PDO: Bolehkah Mereka Menerima Nama Jadual atau Lajur sebagai Input?

Percubaan untuk memasukkan nama jadual sebagai parameter dalam PDO yang disediakan pernyataan, seperti yang digambarkan dalam coretan kod di bawah, akan menghasilkan kegagalan:

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

Mengapa Ini Tidak Mungkin?

Parameter PDO bertujuan untuk nilai data yang ditetapkan secara dinamik semasa pelaksanaan pertanyaan. Nama jadual dan lajur, sebaliknya, adalah elemen statik skema pangkalan data dan tidak sesuai untuk parameterisasi.

Alternatif Selamat untuk Memasukkan Nama Jadual

Untuk memasukkan dengan selamat nama jadual ke dalam pertanyaan SQL, adalah disyorkan untuk menapis dan membersihkan data secara manual. Ini boleh dicapai dengan memasukkan pernyataan suis() tersenarai putih ke dalam fungsi yang melaksanakan pertanyaan secara dinamik:

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

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

Dengan menyediakan kes tertentu dan mengendalikan sebarang senario yang tidak sah, pertanyaan hanya akan dilaksanakan dengan dibenarkan nama jadual. Pendekatan ini memastikan input pengguna tidak secara langsung mempengaruhi pertanyaan SQL, memelihara integriti data.

Atas ialah kandungan terperinci Bolehkah Parameter PDO Digunakan untuk Nama Jadual atau Lajur dalam Pertanyaan SQL?. 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