我是新来的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