2012-04-07 57 views
2

我有一堆表格,就像客户端#和#的变化。有没有办法创建一个查询来查询该表,根据您登录时获得的客户端号码作为其用途?选择具有动态内容的MySQL表格

例子给想法:

 $q2 = "SELECT * FROM users WHERE username = '".$_SESSION['username']."'"; 
     $result2 = mysql_query($q2,$conn); 
     $row = mysql_fetch_assoc($result2); 
     $_CLIENT_ID = $row['CLIENTID']; 
     $q2 = "SELECT * FROM client+".$_CLIENT_ID.""; 

有没有更好的方式来做到这一点?

我试图让客户留在他们自己的表中,所以他们没有达到大规模。

回答

3

我试图让客户保持在他们自己的表格中,所以他们没有达到大规模。

这几乎总是错误的策略。表格大小并不像您如何为访问编制索引一样重要,如果需要,它可以在后面partitioned。处理这个问题的正确方法只是一个表中标识客户端ID的列。

有了适当的客户端识别列,您可以查询为:

SELECT othertable.* 
FROM 
    users 
    JOIN othertable ON users.CLIENTID = othertable.CLIENTID 
WHERE users.username = '$_SESSION['username']' 

与动态表名处理变得麻烦,不仅因为它是更难以对查询。例如,您不能使用占位符代替包含许多参数化查询API的表名称,例如PDO & MySQLi:

// Won't work with a PDO prepared statement. :clienttable place holder isn't allowed 
SELECT * FROM :clienttable WHERE value=:someval