这可能吗?例如使用PDO/MySQL准备语句的表名作为参数
SELECT * FROM :database WHERE id = :id
如果不是,应该我只是这样做:
SELECT * FROM ' . $database . ' WHERE id = :id
或者是有一些其他技巧我需要学习?
这可能吗?例如使用PDO/MySQL准备语句的表名作为参数
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
变量与您现有的表。
是的,我从固定列表中选择它们,但这是一个很好的观点。 –
哦,我没看到那个帖子。谢谢! –