2012-04-07 21 views
2

Ich habe eine Reihe von Tabellen, die wie Client # und die # Änderungen sind. Gibt es eine Möglichkeit, eine Abfrage zu erstellen, um diese Tabelle basierend auf der Client-Nummer abzufragen, die Sie durch die Anmeldung erhalten haben?Wählen Sie MySQL-Tabelle mit dynamischem Inhalt

Beispiel Idee zu geben:

 $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.""; 

Gibt es einen besseren Weg, dies zu tun?

Ich versuche, Kunden in ihren eigenen Tabellen zu halten, damit sie nicht zu massiv werden.

Antwort

3

Ich versuche, Kunden in ihren eigenen Tabellen zu halten, damit sie nicht zu massiv werden.

Dies ist fast immer die falsche Strategie. Die Tabellengröße ist nicht so wichtig, wie Sie es für den Zugriff indiziert haben, und es kann später partitioned sein, sollte das notwendig werden. Der richtige Weg, dies zu handhaben, ist einfach eine Spalte in einer Tabelle, die die Client-ID identifiziert.

Mit einer geeigneten Client-Identifizierung Spalte können Sie abfragen, wie:

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

Umgang mit dynamischen Tabellennamen lästig wird nicht nur, weil es schwieriger zu Abfrage gegen ist. Sie können beispielsweise keinen Platzhalter anstelle eines Tabellennamens mit vielen parametrisierten Abfrage-APIs wie PDO & MySQLi:

verwenden
Verwandte Themen