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

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

Susan Sarandon
發布: 2024-11-27 10:43:14
原創
470 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板