php - 在同一页面上重用MYSQL查询

标签 php syntax reusability

我有一个 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/

相关文章:

php - 在同一函数、多个过滤器中传递 3 个 where () 条件的正确方法是什么? Eloquent - laravel

php - 引用名称中包含破折号的对象属性

c - 通过隐藏 get/set 包装器透明地使用寄存器

.net - 在 .net 中重用数据集

php - 让所有用户使用相同的用户名/密码插入 mysql 数据库是否不安全?

php - 网格不显示在自定义 magento 模块中

bash - 在 Bash 中,双方括号 [[ ]] 是否优于单方括号 [ ]?

java - 在 Java 中,HashSet<Integer> = new HashSet(2) 和 HashSet<Integer> = new HashSet<Integer>(2) 之间有什么区别?

iphone - 如何像 uitableviewcell 一样重用/回收自定义元素?

PHP 邮件程序 - SMTP GMAIL 身份验证