您如何看待此解决方案而不是将表名称用作PDO参数?

时间:2013-10-01 14:28:19

标签: php mysql sql pdo

我使用PDO类连接到mysql因为我注意到它是最好和最可靠的方法。我还注意到我不能在表名中使用PDO参数,所以我看到了这个问题:Can PHP PDO Statements accept the table or column name as parameter?

我在我的应用程序中使用GET参数作为表名,现在我的问题是: 最好使用

   function buildQuery( $get_var ) 
{
    switch($get_var)
    {
        case 1:
            $tbl = 'users';
            break;
    }

    $sql = "SELECT * FROM $tbl";
}

或者只是给出一个" show tables"在MySql中,将此命令产生的每个表与通过GET传递的表进行比较?

谢谢大家!

2 个答案:

答案 0 :(得分:2)

虽然“只是在MySql中给出一个”show tables“并将这个命令产生的每个表与通过GET传递的表进行比较”方法存在缺陷,但这不是主要问题。

你不是第一个没有数据库设计基础知识的人,发明了另一个方形轮,然后来到社区寻求帮助以使其移动。

你需要回顾一些你的想法 并重新考虑数据库设计,它永远不应该涉及动态表,每个动态表都用作某种纯文本文件,只用SELECT * FROM table进行查询。

首先了解一些关系数据库设计基础知识,然后创建一个合理的设计,然后按照每个人的方式查询表:将所有数据保存在一个表中并使用WHERE子句获取具体数据。

答案 1 :(得分:0)

你的第一个解决方案没问题。

但是不要通过get传递表名。只需传递一个数字,您可以通过切换表名来查找。