这是我的问题。 我需要来自数据库的多行,我需要第一行用于某个任务,然后再次遍历所有列表以创建记录集。
$query = "SELECT * FROM mytable";
$result = mysql_query($query);
$firstrow = //extract first row from database
//add display some field from it
while($row = mysql_fetch_assoc($result)) {
//display all of them
}
现在,如何只提取第一行?
答案 0 :(得分:13)
使用mysql_fetch_assoc()不仅可以获取行,还可以将结果集的内部指针移动到下一行。要将结果资源重置为第一行,需要使用mysql_data_seek()。
$query = "SELECT * FROM mytable";
$result = mysql_query($query);
$firstrow = mysql_fetch_assoc($result);
// reset the result resource
mysql_data_seek($result, 0);
while($row = mysql_fetch_assoc($result)) {
//display all of them
}
答案 1 :(得分:1)
如果您想再次获取第一行中的所有行,请尝试以下
$query = "SELECT * FROM mytable";
$result = mysql_query($query);
if ( $row = mysql_fetch_assoc ($result){
$firstRow = $row;
mysql_data_seek($result, 0);
while($row = mysql_fetch_assoc($result)) {
//display all of them
}
}
有关mysql_data_seek的更多信息,请访问:PHP: mysql_data_seek - Manual
答案 2 :(得分:0)
每次拨打mysql_fetch_assoc($result)
时,都会有一行。因此,不要在循环中重复执行,只需执行一次:
$result = mysql_query("...");
if ($row = mysql_fetch_assoc($result)) {
$firstRow = $row;
while ($row = mysql_fetch_assoc($result)) {
// all the rest
}
}
免责声明:这可能是更漂亮的代码,但你明白了!
答案 3 :(得分:0)
您可以使用面向对象的样式:
$query = "SELECT * FROM mytable";
$result = mysql_query($query);
if ( $row = $result->fetch_assoc()){
$firstRow = $row;
mysql_data_seek($result, 0);
while( $row = $result->fetch_assoc()) {
//display all of them
}
}