PHP/MySQL - while 循环只显示最新输入的记录

标签 php mysql

我试图让一个 while 循环显示从表中选择的所有记录,并迭代封装在

中的结果。我的查询正在运行,同时正在显示一些内容...但仅显示最新记录。我不明白这是为什么,而且我对 PHP 很陌生,所以任何帮助都会很棒。

代码:

<?php
//Connect to database and select table
$conn = mysql_connect("", "", "") or die(mysql_error());
mysql_select_db("substest", $conn) or die(mysql_error());
//Issue query
$get_features = "SELECT ID, Title, DateReceived, Synopsis FROM features ORDER BY ID";
$r_get_features = mysql_query($get_features) or die(mysql_error);

if(mysql_num_rows($r_get_features) < 1)  {
    $display_block = "<div class=\"inner\"><h2>Nothing to display</h2></div>";
}
else {
    while($feat_array = mysql_fetch_array($r_get_features)) {
    $feat_id = $feat_array["ID"];
    $feat_title = stripslashes($feat_array["Title"]);
    $feat_dater = stripslashes($feat_array["DateReceived"]);
    $feat_synopsis = stripslashes($feat_array["Synopsis"]);

    $display_block = "<div class=\"inner\">";
    $display_block .= "<h2>".$feat_title."</h2>";
    $display_block .= "<label for \"id\">ID:</label>";
    $display_block .= "<span class=\"formresult\" id=\"id\">".$feat_id."</span><br />";
    $display_block .= "<label for=\"title\">Title:</label>";
    $display_block .= "<span class=\"formresult\" id=\"title\">".$feat_title."</span><br />";
    $display_block .= "<label for=\"datereceived\">Date Received:</label>";
    $display_block .= "<span class=\"formresult\" id=\"datereceived\">".$feat_dater."</span><br />";
    $display_block .= "<label for=\"synopsis\">Synopsis:</label>";
    $display_block .= "<span class=\"formresult\" id=\"synopsis\">".$feat_synopsis."</span><br />";
    $display_block .= "</div>";
}
}
?>
<html>
<head>
<title>Galway Film Fleadh - View Submitted Feature Films</title>
<link href="css/submissions.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="wrapper">
    <div class="inner">
        <h1>Galway Film Fleadh - View Submitted Films</h1>
    </div>
    <?php
        print $display_block;
    ?>
</div>        
</body>
</html>

最佳答案

您正在为每个循环迭代覆盖 $display_block:

$display_block = "<div class=\"inner\">";

在循环之前定义它,然后将上面的行更改为:

$display_block .= "<div class=\"inner\">";

关于PHP/MySQL - while 循环只显示最新输入的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15686569/

相关文章:

python - 从 Python webapp 保持与 mysql/mariadb 连接的最佳实践

sql - 无需先在另一个表中查找值即可执行 SQL 插入

php - 将数组转换为字符串 MySQL 查询

php - 从 "GET"index.php?id=XX 编辑 mysql 数据库

php - 获取所有 MySQL 数据库并将其发送到电子邮件的 Cronjob

php - 在laravel Blade 模板中访问对象内的对象

php - 如何在不使用 create_function 的情况下重写示例?

php - 在 Mysql 或缓存中存储数据与在 PHP 中计算

php - 将此分页脚本转换为搜索分页脚本的逻辑

php - PHP OOP 中的未定义属性错误消息