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

b4wnujal  于 2023-01-01  发布在  Mysql
关注(0)|答案(4)|浏览(144)

我现在正在挣扎,试图找出我应该如何从特定的数据库表读取所有的记录,并在网站上打印出来。我的网站上有一个“新闻馈送”部分。我想显示所有的新闻按最新排序。我的问题不是如何连接和选择数据库,并将数据存储在数组中。
我的问题是在哪里做,怎么做?在显示新闻的同一个文件中,还是在一个将要包含的外部文件中?如果是这样,我应该如何在外部文件中做?
我有一个名为“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);
g52tjvyc

g52tjvyc1#

你可以在你用来显示新闻源的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

另一种方法是进行Map并使用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在一个表中显示所有数据的最简单的方法。

mitkmikd

mitkmikd2#

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

pod7payv

pod7payv3#

这完全取决于你。一般来说,将类似的功能组合到单独的文件/库中被认为是最佳实践。在你的情况下,你可以有一个文件,其中包含与数据库相关的函数。然而,我建议你确保每个请求只调用一次mysqli_connect,以避免创建多个连接。你可以在一个文件中包含mysqli_connect函数,每个请求加载一次。然后在你需要的时候加载函数文件。然后,根据需要调用函数查询数据库。可能有一段时间你只想连接到数据库而不实际进行查询,在这种情况下,分离连接逻辑会使你的项目更模块化一点。有更好的方法来处理这个问题,但是对于一个小的个人项目,这种方法应该不是问题。
根据您的其他注解,您可以有一个包含mysqli_connect(例如mysql_conn.php)函数的文件,另一个包含您的查询函数(例如mysql_funcs. php)。您可以显式地包含mysql_conn.php,或者,您可以使用mysqli连接的文件包含mysql_conn.php脚本,使用require_once,以确保连接只创建一次。

tquggr8v

tquggr8v4#

应该使用mysql_query()启动SELECT
并且您应该将DESC或ASC与ORDER BY一起使用

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

相关问题