Php 在一个页面中多次获取相同数据的最佳方法是什么?
我想在一个页面中显示相同的数据,该页面多次从MySQL获取数据 首先,我想在while循环中使用Php 在一个页面中多次获取相同数据的最佳方法是什么?,php,mysql,Php,Mysql,我想在一个页面中显示相同的数据,该页面多次从MySQL获取数据 首先,我想在while循环中使用MySQL\u fetch\u assoc()从MySQL获取数据,然后将其显示为菜单。第二次我想在页脚中显示与站点地图相同的数据 我目前正在调用mysql\u fetch\u assoc()两次,如下所示: //这是菜单 echo'; 而($data=mysql\u fetch\u assoc($query)){ 回音“”; } 回声“”; //其他页面内容在这里 //在页脚-小型站点地图 echo
MySQL\u fetch\u assoc()
从MySQL获取数据,然后将其显示为菜单。第二次我想在页脚中显示与站点地图相同的数据
我目前正在调用mysql\u fetch\u assoc()两次,如下所示:
//这是菜单
echo';
而($f_data=mysql_fetch_assoc($query)){
回音“- ”;
}
回声“
”;
”;
//其他页面内容在这里
//在页脚-小型站点地图
echo'
我认为上面的代码可能使用了比查询数据库两次所需的更多的资源。由于我在页面中有数据,再次获取相同的数据是在浪费内存,这是不好的
因此,我的问题是:
mysql\u fetch\u assoc()
,它是否会发送单独的查询并从数据库中获取数据?或者它只是从数据库中获取一次数据,然后它只是在现有数组中循环简单地说,我是以最好的方式来做这件事的吗?有没有更好的方法做到这一点,不浪费内存/资源/时间?因为它是相同的数据,我显示了两次。只要参考一下它:)
$menu='
';
//标题
echo$菜单;
//页脚
echo$菜单;
将获取的信息保存到一个数组中,并在该数组中循环搜索菜单和页脚。1。不,它没有mysql\u query
查询数据库,并使用mysql\u fetch\u assoc
过滤返回的结果集
2.有一个更简单的解决方案:
$output = "";
while( $data = mysql_fetch_assoc($query) )
$output .= "<li><a href='page.php?id={$data['id']}'>{$data['title']}</a></li>";
echo "<ul class='menu'>{$output}</ul>"; // This one is the Menu
// other page contents here
echo "<ul class='sitemap'>{$output}</ul>"; // at the footer - the small sitemap
$output=”“;
while($data=mysql\u fetch\u assoc($query))
$output.=“”;
echo“{$output}
”;//在页脚-小型站点地图
”;//这是菜单
//其他页面内容在这里
echo“
您最好的解决方案是将检索到的数据存储在一个数组中,然后您可以随时使用该数组,而无需对数据库进行更多查询,如下所示:
// First we make the query and store the rows in an array
$result = mysql_query($query);
$data_array = array();
while ($data = mysql_fetch_assoc($result)) {
$data_array[] = $data;
}
// Then we can loop through the values in that array without making further queries
echo '<ul class="menu">';
foreach ($data_array as $data) {
echo '<li><a href="page.php?id=', $data['id'], '">', $data['title'], '</a>';
}
echo '</ul>';
// Another loop through our array
echo '<ul class="sitemap">';
foreach ($data_array as $f_data) {
echo '<li><a href="page.php?id=', $f_data['id'], '">', $f_data['title'], '</a>';
}
echo '</ul>';
//首先我们进行查询并将行存储在数组中
$result=mysql\u query($query);
$data_array=array();
而($data=mysql\u fetch\u assoc($result)){
$data_数组[]=$data;
}
//然后,我们可以循环该数组中的值,而无需进一步查询
echo';
foreach($data\u数组作为$f\u数据){
回音“- ”;
}
回声“
”;
”;
//另一个循环通过我们的阵列
echo'
为什么要对同一数据进行多个db调用?那是浪费资源。只需将db数据保存到一个数组中,然后将其输出到您喜欢的任何地方
试试这个:
while( $data = mysql_fetch_assoc($query) )
$menu[$data['id']] = $data['title'];
// This one is the Menu
echo '<ul class="menu">';
foreach ($menu AS $id => $title)
echo "<li><a href='page.php?id=$id'>$title</a></li>";
echo '</ul>';
// other page contents here
// at the footer - the small sitemap
echo '<ul class="sitemap">';
foreach ($menu AS $id => $title)
echo "<li><a href='page.php?id=$id'>$title</a></li>";
echo '</ul>';
while($data=mysql\u fetch\u assoc($query))
$menu[$data['id']=$data['title'];
//这是菜单
echo';
foreach($id=>$title的菜单)
回声“”;
回声“
”;
”;
//其他页面内容在这里
//在页脚-小型站点地图
echo'
使用mysql\u data\u seek($result,0)代码>
它将结果集的指针设置回起始位置。使用mysqli_data_seek($result,0)
看起来效率更高,工作起来更像一个符咒注意,OP希望在每个
元素上放置不同的类。这里使用两个变量$menu
和$sitemap
启动列表,并将其内部(循环)引用为类似$list
的内容,即可轻松实现。然后只需echo$菜单$列表“”代码>啊,抓到了。实际上我只是做一个div包装。。。。和。。。然后CSS可以是#sitemap ul和#menu ulth这一个可以工作,但我认为将数据存储到数组中是一个更好的主意,因此我可以以更定制的方式使用它们。如果不这样做,
mysql_fetch_assoc
还会浪费资源吗?这就是为什么我要求确定并知道更好的方法。谢谢你的回答。
while( $data = mysql_fetch_assoc($query) )
$menu[$data['id']] = $data['title'];
// This one is the Menu
echo '<ul class="menu">';
foreach ($menu AS $id => $title)
echo "<li><a href='page.php?id=$id'>$title</a></li>";
echo '</ul>';
// other page contents here
// at the footer - the small sitemap
echo '<ul class="sitemap">';
foreach ($menu AS $id => $title)
echo "<li><a href='page.php?id=$id'>$title</a></li>";
echo '</ul>';