【问题标题】:PHP MySQL Result displays twice why?PHP MySQL 结果显示两次为什么?
【发布时间】:2015-09-12 03:40:00
【问题描述】:

我有这个简单的 PHP 脚本来从本地 WAMP 服务器获取结果,当我回显查询时,它会为我拥有的每条记录显示一条记录两次!

结果如图所示:

这是 PHP MySQL 脚本

<?php
error_reporting(E_ALL ^ E_DEPRECATED);
$movie_lists = "";
$no_result = "";

$servername = "localhost";
$username = "root";
$password = "localpass";
$dbname = "movieadventuredb";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
//$sql = "SELECT id, movie_quality, movie_release_date FROM movielisting";
$sql = "SELECT * FROM movielisting ORDER BY ID DESC LIMIT 10";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
// output data of each row
   while($row = $result->fetch_assoc()) {
       //echo "id: " . $row["id"]. " - Name: " . $row["movie_name"]. " " .     $row["movie_quality"]. "<br>";

    $id = $row["id"];
    $movie_quality = $row["movie_quality"];
    $release_date = strftime("%Y", strtotime($row["movie_release_date"]));

    $movie_lists .= "<div class='item item-1'><a href='#'><img src='inventory_images/$id.jpg'/></a>
                        <a href='#'><div class='overlay'>
                            <p class='movie_quality $movie_quality'>$movie_quality</p>
                            <p class='movie_year year'>$release_date</p>
                        </div></a>
                    </div>";


     }
   } else {
      $movie_lists = "";
   }
      $conn->close();
 ?>

下面是列表的 CSS 代码。

.recent_movies_slider .recent_movie_lists {float:left; width:97%;}
.slider-horizontal {width:90%; margin:25px auto; *background:#eee; height:240px; z-index:1;}
.slider-horizontal .item {height:200px; width:150px; margin:20px 10px 0;}
.slider-horizontal .item img {height:200px; width:150px;}
.slider-vertical {width:364px; margin:25px 0; float:left; background:#eee; height:300px;}
.slider-vertical .item {height:80px; width:324px; margin:10px 0 10px 20px;}
.overlay { position: relative; top:-204px; left:0; *right:0; *bottom:0; width:150px; height:200px; z-index:2; display:block; *background:red; *background-color: rgba(0,0,0,0.5); color:#fff;}
.overlay:hover {background:rgba(48, 160, 186, 0.43) url("../default_images/play-button.png") no-repeat; background-position:50% 50%;}
.movie_quality {
position: absolute;
bottom: 5px;
left: 5px;
text-transform:uppercase;
 }
   .hd {background:#B43104; padding:2px; border-radius:2px;}
   .cam {background:#DBA901; padding:2px; border-radius:2px;}
   .year {background:#086A87; padding:2px; border-radius:2px;}
   .movie_year {
      position: absolute;
      bottom: 5px;
      right: 5px;
   }

下面是输出结果的 HTML

<div class="recent_movie_lists">
   <div id="slider" class="slider-horizontal">
       <?php echo $movie_lists; ?>
   </div>
</div>

【问题讨论】:

  • 为什么你在这一行使用. operator$movie_lists .=??
  • $result-&gt;fetch_assoc() 返回什么?它是否返回唯一数据?
  • 请在此处发布此行结果echo "id: " . $row["id"]. " - Name: " . $row["movie_name"]. " " . $row["movie_quality"]. "&lt;br&gt;";
  • @Saty:.= 运算符将文本附加到变量中的现有文本,这是此处所需的行为。

标签: php mysql fetch


【解决方案1】:

尝试设置:$movie_lists = (all your code); 而不是 $movie_lists .= (all your code)

对于上面的所有内容,我们深表歉意,正如 cmets 中已经回答的那样。为什么不在div 中回显while 循环?

<div class="recent_movie_lists">
   <div id="slider" class="slider-horizontal">
       <?php
       if ($result->num_rows > 0) {
// output data of each row
   while($row = $result->fetch_assoc()) {
       //echo "id: " . $row["id"]. " - Name: " . $row["movie_name"]. " " .     $row["movie_quality"]. "<br>";

    $id = $row["id"];
    $movie_quality = $row["movie_quality"];
    $release_date = strftime("%Y", strtotime($row["movie_release_date"]));

    echo "<div class='item item-1'><a href='#'><img src='inventory_images/$id.jpg'/></a>
                        <a href='#'><div class='overlay'>
                            <p class='movie_quality $movie_quality'>$movie_quality</p>
                            <p class='movie_year year'>$release_date</p>
                        </div></a>
                    </div>";


     }
   } else {
      echo "";
   }
?>
   </div>
</div>

我假设您将 HTML 和 PHP 保存在同一个文件中。

【讨论】:

  • $movie_list 已在文件顶部定义为空字符串
  • @DannyBroadbent 哦,我的错。
  • 结果还是一样吗:(
  • 您的最新建议现在表明 Nazmul 应该只打印此查询中的最后一行,而不是将每一行附加到变量以显示所有记录
  • 即使我在 HTML 结构中回显,我也会得到相同的结果
猜你喜欢
  • 1970-01-01
  • 2020-11-13
  • 2023-04-10
  • 1970-01-01
  • 2020-03-06
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
相关资源
最近更新 更多