数据库表和列名称作为代码中的变量

时间:2014-08-29 09:11:55

标签: php mysql sql database sql-injection

我正在编写CMS。我有这个想法将表和列名称作为变量。例如,典型的查询看起来像

" SELECT * FROM $DB_NEWS[table] WHERE $DB_NEWS[cat_id] = ? "

而不是

"SELECT * FROM news WHERE cat_id = ? "

对于每个表我都有一个数组,例如我可以设置$DB_USERS[table] = "sdfgdsgh" 因此,如果某人能以某种方式进行SQL注入,他就不会知道用户名的名称是什么,是吗?或者它在安全方面是完全无用的?

即使是这样,我也开始认为它不值得。因此,代码的可读性较差。例如,我的代码中有类似的内容:$result[$DB_USERS['username']] 看起来很糟糕,不是吗?

你怎么看?我在任何用户输入处使用PDO和预处理语句(模拟prepares:false)。 我想也许我只是将表名作为变量而列,这将是正常的。

0 个答案:

没有答案