Pertanyaan:
Bolehkah anda mengikat nama jadual dalam PHP PDO?
Isu:
Percubaan untuk mengikat nama jadual menggunakan bindValue() mengakibatkan ralat. Isu timbul apabila cuba menetapkan nama jadual secara dinamik melalui input pengguna.
Penyelesaian:
Tidak, tidak mungkin untuk mengikat nama jadual secara langsung.
Ini disebabkan oleh kebimbangan keselamatan, kerana ia boleh membenarkan pengguna mengakses jadual sewenang-wenangnya dalam pangkalan data. Sebaliknya, adalah disyorkan untuk:
Pelaksanaan Selamat dengan Lapisan Abstraksi:
Untuk mencipta kelas selamat untuk mengakses data jadual, ikut langkah berikut:
abstract class AbstractTable { private $table; private $pdo; public function __construct(PDO $pdo) { $this->pdo = $pdo; } public function describe() { return $this->pdo->query("DESCRIBE `" . $this->table . "`")->fetchAll(); } } class SomeTable extends AbstractTable { private $table = 'sometable'; }
Sekarang, gunakan kelas untuk mengakses data jadual dengan selamat:
$pdo = new PDO(...); $table = new SomeTable($pdo); $fields = $table->describe();
Atas ialah kandungan terperinci Bolehkah anda Mengikat Nama Jadual dalam PHP PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!