首頁  >  文章  >  後端開發  >  可以在 PDO 語句中綁定表名嗎?

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-17 12:42:01747瀏覽

Can you Bind a Table Name in a PDO Statement?

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();
    }
}

然後,建立一個特定的表類,擴展抽象類別並指定授權的表名稱:

class SomeTable extends AbstractTable {
    private $table = 'some_table';
}

透過此方法,您可以安全地擷取指定資料表的列元資料:

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

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

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