我正在尝试创建一个 PHP 脚本,该脚本从 MySQL 数据库获取值,显示带有来自数组的 time_stamp 的 header ,以及带有名为“working_ra”的值的子 header ,该值位于这些类别下。这两个类别下的值都显示在表格中。我正在对查询中的working_ra 的值进行排序,以便我可以运行一个while 循环,说明如果它们不相同,则显示下一个working_ra 并继续回显值。这是我的代码:
foreach ($date as $i) {
echo "<pre>"."<h2>".$i."</h2>"."</pre>";
$result = mysqli_query ($con, "SELECT * FROM Signing WHERE value1 = 'Ings' AND time_stamp = '$i' ORDER BY working_ra");
$num_results = mysqli_num_rows($result);
$row = mysqli_fetch_array($result);
$desk = $row["working_ra"];
echo "var_desk starting value ","<b>", $desk,"</b>";
echo "<table border='1'>";
echo "<tr>";
echo "<td>", $row["first"],"</td>";
echo "</tr>";
while ($row = mysqli_fetch_array($result)) {
if ((string)$desk != (string)$row["working_ra"]) {
echo "</table>";
$desk = $row["working_ra"];
echo "var_desk next value ","<b>",$desk,"</b>";
echo "<br />";
echo "<table border='1'>";
}
echo "<tr>";
echo "<td>", $row["first"],"</td>";
echo "</tr>";
}
$result->free();
}
$con->close();
一切正常,直到到达第二个“办公 table ”名称。然后,应该包含下一个值的表将被转移到下一个日期。这是页面上的样子:
aSFashagh、Jeremy、Jeremy 和 Johnny 都应该在(Phil,2013 年 1 月 10 日)下,但被下移到下一个日期和working_ra(Phil,2013 年 1 月 20 日)。 zffaA 和 sdfdsggsdhj 都应该位于(Phil,2013 年 1 月 20 日)下,但实际上位于(Phil,2013 年 2 月 25 日)下。奇怪的是,该方法确实有效没有尝试将所有值放入表中。
我的假设是,这可能是表标签结束和开始的顺序,但我已经尝试了很多方法,但仍然无法找出问题所在。
编辑
抱歉,说起来很困惑。但我试图让它一切都按照它应该的方式移动。其中“first”的值属于其相应的 time_stamp 和working_ra。例如,MySQL 数据库中 Johnny 的值是working_ra - Phil 和 time_stamp - 一月 10, 2013。但是,正如您所看到的,Johnny 不在下面(Phil,2013 年 1 月 10 日),而是一月 20 日, 2013。这不是查询的问题,它与 while 循环和表有关,我只是无法弄清楚。
唯一正确的两个值是 Zack 和 Why,其对应值为 (working_ra = "Bob", time_stamp = "January 10, 2013")
最佳答案
我相信你的问题出在 mysql 行指针上。您在 while 循环之前已经使用过 mysqli_fetch_array 一次,因此将当前 mysql 行移动到下一行。
这段代码
mysqli_data_seek($result, 0);
将重置指针。
将其放在 while 循环之前。
关于php - 一切都出了问题 : Php - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20706135/