首頁 >後端開發 >php教程 >可以在 PHP PDO 準備語句中綁定表名嗎?

可以在 PHP PDO 準備語句中綁定表名嗎?

Susan Sarandon
Susan Sarandon原創
2024-11-27 10:43:14524瀏覽

Can You Bind Table Names in PHP PDO Prepared Statements?

PHP PDO - 綁定表名稱

在PHP 資料物件(PDO) 中,是否可以將表名稱綁定到準備好的資料對像上語句?

答案:

不,不可能在 PDO 中綁定表名。

綁定表名會帶來安全風險,因為它允許使用者存取資料庫中的任何表。建議將表名列入白名單,以確保只能查詢授權的表。

替代方法:

要安全地存取表元數據,請考慮為您的表創建一個父類表類,如:

abstract class AbstractTable {
    private $table;
    private $db;

    public function __construct(PDO $pdo) {
        $this->db = $pdo;
    }

    public function describe() {
        return $this->db->query("DESCRIBE `$this->table`")->fetchAll();
    }
}

然後,為每個表建立一個特定的類,例如as:

class MyTable extends AbstractTable {
    private $table = 'my_table';
}

使用這種方法,您可以安全地存取表元資料:

$pdo = new PDO(...);
$table = new MyTable($pdo);
$fields = $table->describe();

以上是可以在 PHP PDO 準備語句中綁定表名嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn