【发布时间】:2011-11-24 09:36:29
【问题描述】:
这可能吗?例如
SELECT * FROM :database WHERE id = :id
如果没有,我应该这样做吗:
SELECT * FROM ' . $database . ' WHERE id = :id
或者我还需要学习其他技巧吗?
【问题讨论】:
这可能吗?例如
SELECT * FROM :database WHERE id = :id
如果没有,我应该这样做吗:
SELECT * FROM ' . $database . ' WHERE id = :id
或者我还需要学习其他技巧吗?
【问题讨论】:
表名和列名不能被 PDO 中的参数替换。 见Can PHP PDO Statements accept the table or column name as parameter?
【讨论】:
在查询中传递动态构建的表名是非常危险的。但是,如果您的应用程序非常需要它,您就必须清理数据。由于 PDO 对此无能为力,因此您必须自己在表名上调用 mysql_real_escape_string。此外,您还必须将表名用反引号括起来作为“table_name”。因此,将查询准备为:
'SELECT * FROM `' . mysql_real_escape_string($database) . '` WHERE id = :id
注意:mysql_real_escape_string 需要已经建立到数据库的连接。
编辑:但是当我想到它时,最好将$database 变量与您现有的表相匹配。
【讨论】: