首页  >  文章  >  后端开发  >  可以在 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