繁体   English   中英

从特定数据库读取所有记录并打印它们的最佳方法是什么?

[英]What would be the best way to read all records from a specific Database and print them?

我现在正在努力弄清楚应该如何从特定数据库表中读取所有记录并在网站上打印出来。 我的网站上有一个“新闻提要”部分。 我想展示所有最新消息。 我的问题不是如何连接数据库并从中进行选择,以及如何将数据存储在数组中。

我的问题是在哪里做,如何做? 是与显示新闻的文件位于同一文件中,还是要包含在外部文件中? 如果是这样,我应该如何在外部文件中执行此操作?

我有一个名为“ 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);

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

是的,您可以将代码放在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项目,但是对于您所拥有的,这是可行的。

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

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

您可以在用于显示新闻源的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在表中显示所有数据的最简单方法。

您应该使用mysql_query()启动SELECT

并且您应该将DESC或ASC与ORDER BY一起使用

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM