这可能吗? e.g。
SELECT * FROM :database WHERE id = :id
如果没有,我应该这样做:
SELECT * FROM ' . $database . ' WHERE id = :id
或者还有其他一些我需要学习的技巧吗?
答案 0 :(得分:3)
表和列名称不能由PDO中的参数替换。 见Can PHP PDO Statements accept the table or column name as parameter?
答案 1 :(得分:3)
在查询中传递动态构建的表名是非常危险的。但是,如果您的应用程序非常需要它,那么您必须清理数据。由于PDO无法解决此问题,因此您必须自己在表名上调用mysql_real_escape_string。此外,您还必须将带有反引号的表名括起来作为`table_name`。因此,请将查询准备为:
'SELECT * FROM `' . mysql_real_escape_string($database) . '` WHERE id = :id
注意:mysql_real_escape_string
需要已建立的与DB的连接。
编辑:但是当我考虑它时,最好将$database
变量与现有表格相匹配。