我是新來的PHP和MySQL,我試圖建立一個表。不過,我有一個非常有趣的錯誤,我無法修復。PHP,雖然循環不顯示結果
代碼:
//Initializing mysql queries
//-----------------------SELECTING GOALS------------
$sql= "SELECT * FROM goals";
$records = mysql_query($sql);
//-----------------------SELECTING SERVICES---------
$sql2= "SELECT * FROM services";
$records2 = mysql_query($sql2);
//----------------SELECTING THE JUNCTION----------
$sql3 = "SELECT services.sid AS sid, services.name, objectives.oid
FROM services, objectives, servo
WHERE servo.s_id = services.id AND servo.obj_id = objectives.id";
$records3 = mysql_query($sql3);
$sql4 = "SELECT oid, gid, statement, GROUP_CONCAT(DISTINCT gid) AS GOID
FROM goals, objectives, obgoals
WHERE obgoals.go_id = goals.id AND obgoals.ob_id = objectives.id
GROUP BY oid";
$records4 = mysql_query($sql4);
<?php
while ($product = mysql_fetch_assoc($records2)) {
echo "<tr>";
$sid = $product['sid'];
$service = $product['name'];
echo "<td><a href='objectives.php?sid=" . $sid . "&service=" . $service . "'>" . $product['sid'] . "</a> </td>";
echo "<td>".$product['name']."</td>";
echo "<td>";
while ($g4services = mysql_fetch_assoc($records)) {
echo $g4services['gid'];
}
echo"</td>" ;
}
?>
基本上,我的表具有30行和3列,最後一列是應該從數據庫中打印出的值,這部分是由這一段代碼完成
while ($g4services = mysql_fetch_assoc($records)) {
echo $g4services['gid'];
}
但是,不是打印每行的結果,它只打印第一行的結果,基本上是第一個while循環運行並創建30行的表,但第二個while循環只打印第一個值只有行。基本上這是發生:
|SID|Name Of Service| Objectives|
-------------------------------
|S1| Service 1 | make the best cars|
|s2| Service 2 | |
|s3| Service 3 | |
|s4| Service 5 | |
|s5| Service 5 | |
.....
.....
....
|s30| Service30 | |
由於某種原因,我的目標列沒有填充while循環,它只適用於第一行。如果有人可以幫助我在while循環中打印每行的值,這將是巨大的幫助。我將不勝感激。謝謝。
你怎麼初始化'$ records'? –
檢查每個迭代的'$ records'。 –
外循環的第一次迭代將讀取第二個查詢的所有行。剩下的迭代將不會在'$ records2'中留下任何東西。 – Barmar