2012-04-07 26 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