pdo 的预处理语句(prepared statements)不支持直接绑定表名、列名或排序方向(asc/desc),因为这些属于 sql 语法结构而非数据值。要实现安全的动态查询,必须使用白名单映射机制:将用户输入的标识符与代码中预定义的合法列表进行比对,匹配成功后再拼接到 sql 字符串中。这样做既能防止 sql 注入,又能保证查询语法的正确性。

为什么 PDO 不能绑定标识符
PDO 的占位符(如 :name 或 ? )仅用于替换 SQL 中的字面量(Literals)。数据库驱动在预处理阶段会将这些占位符视为“数据”,并在执行时自动添加引号。如果尝试绑定表名,生成的 SQL 会变成 SELECT * FROM











