[英]Looping MySQL Results With Additional Queries
我希望有人能夠幫助我概念化我正在編寫的PHP頁面的解決方案。
實際上,我在一個名為“服務器”的MySQL數據庫中有一個主表。 其中有四個字段; 部門 , 服務器A , 服務器B , 服務器C。 對於上下文,部門條目是部門的名稱,並且serverA,serverB和serverC對應於每個部門的三台服務器的主機名。
我正在嘗試獲取部門,服務器A,服務器B和服務器C的名稱,然后使用該數據填充多個SQL查詢。 我將數據分為多個表以保持整潔和相互關系。 這就是我所擁有的;
<?php
$conn = mysqli_connect("server", "root", "root") or die('Error connecting to MySQLserver.');
mysqli_select_db($conn, "Database") or die("Failed to connect to database");
$sql = "SELECT * FROM Servers";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$deptartment = $row['department']
$serverA = $row['serverA'];
$serverB = $row['serverB'];
$serverC = $row['serverC'];
}
} else {
echo "Unable to connect to server. Please check your settings.";
}
?>
, wherein record of serverA, the following happens; 然后,我想做的是一種 ,其中serverA的記錄發生以下情況;
<?php
$conn = mysqli_connect("server", "root", "root") or die('Error connecting to MySQLserver.');
mysqli_select_db($conn, "Database") or die("Failed to connect to database");
$sql = "SELECT * FROM Data WHERE `serverName` = '$serverA' ORDER BY `timestamp` DESC LIMIT 1";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$serverName = $row['serverName'];
$serverType = $row['serverType'];
$serverAge = $row['serverAge'];
}
} else {
echo "Unable to connection to server. Please check your settings.";
}
?>
然后,我可以使用相同的理論遍歷serverB的結果,並讓serverB的每個記錄執行另一個查詢以獲取其他數據。
對於如何循環遍歷每個結果並用它填充其他查詢,我似乎在使用正確的語法。
有任何可能的指導嗎?
謝謝!
Sample Data:
department: Math
serverA: math-server-windows.school.edu
serverB: math-server-mac.school.edu
serverC: math-server-linux.school.edu
department: Psychology
serverA: psychology-server-windows.school.edu
serverB: psychology-server-mac.school.edu
serverC: psychology-server-linux.school.edu
department: Arts
serverA: artsserver.school.edu
serverB: artsold.school.edu
serverC: artsbackup.school.edu
您可以使用JOIN簡化此過程。
表Data
的字段servername
對應於服務器表中的serverA
, serverB
或serverC
。 因此,您可以運行如下查詢:
SELECT Data.*,
A.serverA AS serverA,
B.serverB AS serverB,
C.serverC AS serverC
FROM Data
JOIN servers as A on Data.servername = A.serverA
JOIN servers as B on Data.servername = B.serverB
JOIN servers as C on Data.servername = C.serverC
ORDER BY <whatever>
因此,現在每一行都將包含每個部門的服務器信息,因此可以像這樣遍歷結果:
while( $row = $result->fetch_assoc() ){
echo "\nDept: ".$row['department'];
echo "\nA: ".$row['serverA'];
echo "\nB: ".$row['serverB'];
echo "\nC: ".$row['serverB'];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.