查询:
可以在 PHP PDO 中绑定表名吗?
问题:
尝试使用bindValue() 绑定表名会导致错误。当尝试通过用户输入动态设置表名时,就会出现此问题。
解决方案:
不,无法直接绑定表名。
这是出于安全考虑,因为它可能允许用户访问数据库中的任意表。相反,建议:
使用抽象层的安全实现:
要创建用于访问表数据的安全类,请按照以下步骤操作:
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'; }
现在,使用该类来访问安全地保存表数据:
$pdo = new PDO(...); $table = new SomeTable($pdo); $fields = $table->describe();
以上是PHP PDO 中可以绑定表名吗?的详细内容。更多信息请关注PHP中文网其他相关文章!