【问题标题】:What would be the best way to read all records from a specific Database and print them?从特定数据库读取所有记录并打印它们的最佳方法是什么?
【发布时间】:2014-12-26 20:47:29
【问题描述】:

我现在正在努力弄清楚我应该如何从特定数据库表中读取所有记录并将它们打印在网站上。我的网站上有一个“新闻源”部分。我想显示按最新排序的所有新闻。我的问题不是如何连接并从数据库中选择并将数据存储在数组中。

我的问题是在哪里做,怎么做?在显示新闻的同一文件中,还是在将包含的外部文件中?如果是,我应该在外部文件中怎么做?

我有一个名为“functions.php”的文件,它包含在每一页中。它看起来像这样:

<?php
if(!isset($_SESSION)){
session_start();
}

function loggedIn(){
if(isset($_SESSION['user_id']) && ($_SESSION['user_id'] != "")){
    return true;
}else{
    return false;
}
}

if(loggedIn()){
$user_id = $_SESSION['user_id'];
$user_email = $_SESSION['user_email'];
$user_first_name = $_SESSION['user_first_name'];
$user_last_name = $_SESSION['user_last_name'];
$user_newsletter = $_SESSION['user_first_name'];
}

?>

是不是应该在这里我打开mysqli连接并存储数据以及如何?

mysqli_connect($server, $user_name, $pass_word, $database);
$query = "SELECT * FROM news ORDER BY id";
news_data = mysqli_fetch_array($query);

感谢您阅读本文所花费的每一次时间。圣诞快乐,新年快乐 :)

【问题讨论】:

  • $result = mysqli_query($query); while($news_data = mysqli_fetch_array($result)) { display $news_data }阅读友好的manual

标签: php mysql session mysqli connect


【解决方案1】:

您可以在用于显示新闻源的 php 文件中连接和关闭连接。 你可以像这样创建一个 foreach 循环:

mysqli_connect($server, $user_name, $pass_word, $database);
$query = "SELECT * FROM news ORDER BY id";

 //start table here
 while($news_data = mysqli_fetch_array($query)){
     //create html table content here
}

//close html table and db connection

另一种方法是进行映射并使用 tablemakerFromArray 函数:

 mysqli_connect($server, $user_name, $pass_word, $database);
 $query = "SELECT * FROM news ORDER BY id";

 $table_content_array=array('');
 $i++;
 while($news_data = mysqli_fetch_array($query)){
     $table_conntent_array[$i][your_first_key]=$news_data['table_row_about_this_key'];
     .....//other key and rows 
     ......
     $i++;
}

 tableFromArray(table_content_array);//this func. will make keys of array table titles

 public static  function tableFromArray($arr){
    if(count($arr)==0)
    {
        return 0;
    }
    ?>
     <table border="1"><tr>
    <?php foreach ($arr[0] as $key => $value) {?>
        <td><?php echo $key; ?></td>
    <?php }?>
    <tr/>
    <?php
    $i=0;
     foreach ($arr as $item) {?>
    <tr/>
        <?php  foreach ($item as $alan) {?>
            <td><?php echo $alan;?></td>
        <?php }?>
    </tr>
    <?php }?>
</table>
<?php }

这是用 php 显示表格中所有数据的最简单方法。

【讨论】:

  • 每个请求可能多次打开和关闭数据库连接会带来不必要的开销。将 mysqli_connect 函数删除到另一个包含仅在使用/包含数据库连接函数时评估一次的包含仍然是有益的。
【解决方案2】:

是的,您可以将代码放在这里,在 If(loggedIn()) 条件内。

if(loggedIn()){
$user_id = $_SESSION['user_id'];
$user_email = $_SESSION['user_email'];
$user_first_name = $_SESSION['user_first_name'];
$user_last_name = $_SESSION['user_last_name'];
$user_newsletter = $_SESSION['user_first_name'];
mysqli_connect($server, $user_name, $pass_word, $database);
$query = "SELECT * FROM news ORDER BY id";
news_data = mysqli_fetch_array($query);
}

当然,有很多更好的方法来组织 PHP 项目,但就你所拥有的而言,这是可行的。

【讨论】:

  • 但如前所述,该文件包含在我的所有文件中,因为它具有 session_start();而且我想在不需要这些信息的页面上打开 mysqli 连接是不明智的。所以也许我应该做一个新的函数文件,包含这个函数页面后在新闻页面中包含它,并说 if(loggedIn){ //打开mysqli连接,获取数据,然后再次关闭连接? }
【解决方案3】:

这完全取决于你。通常,将类似的功能分组到单独的文件/库中被认为是最佳实践。在您的情况下,您可以有一个文件,其中包含与数据库相关的功能。但是,我建议您确保每个请求仅调用一次 mysqli_connect,以避免创建多个连接。您可以将 mysqli_connect 函数放在每个请求加载一次的文件中,然后在需要时加载函数文件。然后,只需根据需要调用该函数来查询数据库。有时您可能只想连接到数据库而不实际执行查询,在这种情况下,将连接逻辑分开将使您的项目更加模块化。有更好的方法来处理这个问题,但对于小型个人项目,这种方法应该不是问题。

根据您的其他评论,您可能有一个包含 mysqli_connect(例如 mysql_conn.php)函数的文件,另一个包含您的查询函数(例如 mysql_funcs.php)。您可以明确包含 mysql_conn.php,或者,您可以让使用 mysqli 连接的文件包含使用 require_once 的 mysql_conn.php 脚本,以确保仅创建一次连接。

【讨论】:

    【解决方案4】:

    你应该使用 mysql_query() 来启动 SELECT

    你应该使用 DESC 或 ASC 和 ORDER BY

              $query = mysql_query("SELECT * FROM news ORDER BY id DESC");
              news_data = mysqli_fetch_array($query);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-04
      • 2016-08-10
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 2011-05-28
      相关资源
      最近更新 更多