我有一堆像Client#和#changes这样的表。有没有办法根据您登录时使用的客户端编号创建查询以查询该表?
提出想法的例子:
$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."";
有更好的方法吗?
我正在努力让客户留在他们自己的桌子里,这样他们就不会变得庞大。
答案 0 :(得分: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