2016-07-22 114 views
-1

我有兩個數據庫,我想要在一個表上顯示。它們是正常的用戶數據庫,具有表users和管理數據庫,具有表users。由於他們是註冊系統,他們有相同的表字段。那是user_id, user_name, user_email, user_pass, joining_date。 問題,我想顯示他們的內容在一張桌子上,並根據數據庫名稱包含他們的角色。 normalUser用於管理數據庫的normalUser數據庫和管理員角色。我想不出一個MYSQLI SELECT語句來實現這一點,任何人?謝謝。顯示來自兩個MYSQL數據庫的數據同時具有相同的表和字段名稱

//admin database 
$servername = "localhost"; 
$username = "root"; 
$password = "ub435!"; 
$dbname = "adm"; 

// Create connection 
$con = new mysqli($servername, $username, $password, $dbname); 

//normal user database 
$servername = "localhost"; 
$username = "root"; 
$password = "ub435!"; 
$dbname = "normaluser"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 


$sql = "SELECT * FROM users ORDER BY joining_date DESC"; 
$result = $conn->query($sql); 
if ($result->num_rows > 0) { 

    echo " <table><tr><th>ID</th><th>User Name</th> 
<th>Email</th><th>Password</th><th>Joining Date</th> 
</tr>"; 

    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "<tr>"; 

echo '<td>' . $row['user_id'] . '</td>'; 

echo '<td>' . $row['user_name'] . '</td>'; 

echo '<td>' . $row['user_email'] . '</td>'; 

echo '<td>' . $row['user_pass'] . '</td>'; 

echo '<td>' . $row['joining_date'] . '</td>'; 
echo "</tr>"; 
} 

echo "</table>"; 
} else { 
echo "You have no Users."; 
} 
+0

中列出相同順序的列,您是否可以不只是創建一個列或一個表,而是說明用戶擁有什麼權限/角色?看起來你在嘗試做什麼有點過頭,也許是因爲我沒有完全理解你的目標是什麼。 – Nytrix

+0

如何獲取角色的表格列中的數據庫? – bmm

回答

1

你可以做一個UNION,因爲MySQL允許在一個查詢

你可以參考表默認的數據庫內,tbl_name,或 作爲的db_name.tbl_name指定要指定一個數據庫一個數據庫明確。您可以參考 列作爲col_name,tbl_name.col_name或db_name.tbl_name.col_name。 除非引用不明確,否則不需要爲 列引用指定tbl_name或db_name.tbl_name前綴。請參見 第10.2.1節「標識符限定符」,瞭解需要更明確的列參考形式的歧義示例。

來源:http://dev.mysql.com/doc/refman/5.7/en/select.html

因此您的查詢就會成爲。

SELECT adm.users.*, 'admin' as role FROM adm.users 
UNION 
SELECT normaluser.users.*, 'simple' as role FROM normaluser.users 
ORDER BY joining_date DESC" 

根據請求的附加信息進行更新。

不要打開兩個單獨的連接到數據庫。打開一個連接但沒有數據庫名稱參數。

$con = new mysqli($servername, $username, $password); 

將此連接用於此頁面上的所有後續查詢。這意味着,而不僅僅是users你要麼在本頁面上每做到adm.usersnormaluser.users

我已更新上面的查詢以反映實際的表名稱。

旁註: 儘量不要使用root帳戶在Web應用程序

+0

我有兩個數據庫: '$ dbname =「fundblogin」; $ conn = new mysqli($ servername,$ username,$ password,$ dbname); die($ conn-> connect_error); $ dbname =「funadmindb」; $ con = new mysqli($ servername,$ username,$ password,$ dbname);'如何在聯盟中插入相同內容?請。 – bmm

+0

請添加此作爲問題的一部分。通常在回答問題後改變問題在SO上是不被接受的(例如http://meta.stackoverflow.com/questions/253762/link-for-poor-or-ever-growing-questions-to-better-explain-但是,我會提出你的要求,並在問題更新後編輯我的答案。 – e4c5

+0

完成我已包括在內。對不起 – bmm

0

看看在UNION operator

SELECT *, 'normal' AS role FROM normalUser.users u 
UNION 
SELECT *, 'admin AS role FROM admin.users a 

列名和順序必須是相同的。如果訂單不同,那麼在SELECT子句(SELECT u.user_id, u.user_name...

+0

我有兩個數據庫: '$ dbname =「fundblogin」; $ conn = new mysqli($ servername,$ username,$ password,$ dbname); die($ conn-> connect_error); $ dbname =「funadmindb」; $ con = new mysqli($ servername,$ username,$ password,$ dbname);'如何在聯盟中插入相同內容?請。 – bmm

相關問題