我的网站有一个由mysqli_query生成的相当大的表;该查询包含一个列'messagetime':
$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
"
);
感谢您的任何见解!
答案 0 :(得分:3)
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>";
}
答案 1 :(得分:0)
如果您愿意,可以在通过shile循环运行之前调用第一行或其他行。 while循环将从尚未调用的任何行开始。很容易忘记,while只存在循环遍历行直到完成。我们总是可以从查询中调用一行,但我们专门做了 more 。
您需要做的就是这个
$row = mysqli_fetch_assoc($result);
然后你可以做这样的事情来将消息时间存储在一个变量
中$messagetime = $row;
然后你可以按照你喜欢的方式使用这个变量
在此实例之后,查询的第一行的id为1,运行以下内容时,它将以2开头。
while ($row = mysqli_fetch_assoc($result)) { ... }