我有一个 header.php 和一个 footer.php 文件包含在同一页面上,它们都返回一些相同的信息。具体来说,我在每个文件中使用此查询。
<?php
$q3 = "SELECT page_id, show_id, link_title FROM pages as p WHERE show_id = 1";
$r3 = @mysqli_query ($dbc, $q3); // Run the Query.
while ($nav = mysqli_fetch_array($r3, MYSQLI_ASSOC)) {
echo"<li>{$nav['link_title']}</li>"
}
?>
这是在页眉和页脚中显示页面。
然而,有时页脚中的第二个查询会返回“无法获取 mysqli”,有时有效,有时无效。我想知道我应该使用类似 mysqli_free_result()
的东西吗?这是更好的做法吗?
更重要的是,在每次查询后释放结果是一个好习惯吗?有没有更好的方法来使用不同页面的相同结果和 <?php // ?>
标签?
另外,我时不时会收到错误“mysql 连接错误太多”?这是因为我在运行查询后没有关闭连接吗?
最佳答案
您可以首先从代码中删除@
。错误抑制是缓慢且有害的做法。
如果您的 inlcude 位于同一范围内,您可以将第一个值保存在某个变量中,然后检查第二个变量(如果变量已设置)。
header.php的内容
$storage = '';
$query = "SELECT page_id, show_id, link_title FROM pages as p WHERE show_id = 1";
if ( $result = mysqli_query ($dbc, $query))
{
while ($nav = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
$item = "<li>{$nav['link_title']}</li>";
$storage .= $item;
echo $item;
}
}
else
{
echo 'Query has failed !';
}
footer.php的内容
if ( isset( $storage ) && count( $storage ))
{
echo $storage;
}
else
{
echo 'Query has failed !';
}
了解include()在精美的手册中。
请停止写这种程序性变态。了解如何进行 OOP 并阅读 PDO .
关于php - 在同一页面上重用MYSQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5829718/