我的站点有一个由messagetime生成的相当大的表;该查询包含一个‘mysqli_query’列:
$result = mysqli_query($cxn,
"
SELECT ......., messagetime
FROM messages
ORDER by messagetime
DESC
"
);然后,我在while循环的帮助下生成表(用php):
echo "<table id='myTbl' class='newest' border='1'>";
echo "<th>Content</th> //etc.
echo "<tbody>";
while ($row = mysqli_fetch_assoc($result)) {
// Fill the table body here
}
echo "</tbody></table>";没什么惊天动地的。但是,站点使用轮询来刷新表,并且我需要将查询的第一个结果的messagetime存储在表中,如下所示:
echo "<table id='myTbl' class='newest".$newestTime."' border='1'>";现在,为了捕获第一个(最新的)消息时间,我正在调整我的While循环来完成以下操作:
$i = 0;
while ($row = mysqli_fetch_assoc($result)) {
if ($i == 0) {
echo "<table id='myTbl' class='newest".$row['messagetime']."' border='1'>";
echo "<th>Content</th> //etc.
echo "<tbody>";
}
// Fill the table here
$i++;
}
echo "</tbody></table>";然而,在我看来,这似乎有点老生常谈。有没有办法不使用子查询或联合(因为我的查询实际上是2个连接的产物,而且已经很昂贵了;这种方法被描述为here),可以简单地从查询中提取第一个结果,就像这样?
$result = mysqli_query($cxn,
"
SELECT ......., messagetime, **first_messagetime_result AS newest_time**
FROM messages
ORDER by messagetime
DESC
"
);谢谢你的见解!
发布于 2015-04-20 04:33:51
if ($result->num_rows > 0) {
$row = mysqli_fetch_assoc($result)
echo "<table id='myTbl' class='newest".$row['messagetime']."' border='1'>";
echo "<thead><tr>";
echo "<th>Content</th>"; //etc.
echo "</tr></thead>";
echo "<tbody>";
do {
// Fill the table here
} while ($row = mysqli_fetch_assoc($result));
echo "</tbody></table>";
}发布于 2015-04-20 04:46:13
在通过shile循环运行它之前,如果愿意,您可以简单地调用第一行或其他行。while循环将从所有尚未调用的行开始。很容易忘记while的存在只是为了遍历各行,直到它完成为止。我们总是可以从查询中调用一行,但是我们使用while来专门做更多的事情。
你需要做的就是这样
$row = mysqli_fetch_assoc($result);然后您可以这样做,将messagetime存储在一个变量中
$messagetime = $row;然后你可以随意使用这个变量
在此实例之后,查询的第一行的id为1,当运行下面的代码时,它将从2开始。
while ($row = mysqli_fetch_assoc($result)) { ... }https://stackoverflow.com/questions/29735269
复制相似问题