【问题标题】:Looping through and displaying multiple table rows from database sql循环并显示来自数据库 sql 的多个表行
【发布时间】:2016-04-20 03:10:33
【问题描述】:

我试图遍历我的数据库并显示每一行。我不知道我的代码有什么问题,但它根本没有显示任何内容...有人可以帮忙吗?

<?php

$players = mysql_query("SELECT * FROM users");
while ($row = mysql_fetch_assoc($players)) {
    $steamid = $row["name"];
    $profilename = $row["profilename"];
    $profileurl = $row["profileurl"];
    $avatar = $row["avatar"];
    $region = $row["region"];


?>


<p><?php echo $name ?></p>
<p>><?php echo $profilename ?></p>
<p>><?php echo $profileurl ?></p>
<p><?php echo $avatar ?></p>


<?php
}
?>

这是我包含这个文件的地方:

<?php include 'fetch_players.php'; ?>

【问题讨论】:

  • 你有 500 分吗?你在运行 PHP 7 吗? $name 未定义,但这只会引发警告(此处可能分配不正确$steamid = $row["name"];)。你有数据库连接吗?
  • 停止使用已弃用的mysql_* 使用mysqli_*PDO
  • 您只是假设查询成功。不好的假设。永远不要假设成功。 mysql_query(...) or die(mysql_error()) 应该是绝对准系统/可接受的最小错误处理。即便如此,您也不应该再使用 mysql_*() 函数。他们已经死了/走了,应该不惜一切代价避免。
  • 谢谢你们的回答。已经更新了,Anant 你是正确的!非常感谢!

标签: php mysql sql


【解决方案1】:

下面给出了以正确方法使用mysqli_* 的示例。也请多多关照cmets:-

<?php
error_reporting(E_ALL); // check all type of error
ini_set('display_errors',1); // display those error
$connection = mysqli_connect('hostname','username','password','dbname'); // provide your db credentials here
$final_data = array(); // create empty array
if($connection){
    $players = mysqli_query($connection,"SELECT * FROM users");
    if($players){
        while ($row = mysqli_fetch_assoc($players)) {
            $final_data[$row['id']]['name'] = $row['name']; // assign values id wise to the array
            $final_data[$row['id']]['profilename'] = $row['profilename'];
            $final_data[$row['id']]['profileurl'] = $row['profileurl'];
            $final_data[$row['id']]['avatar'] = $row['avatar'];
            $final_data[$row['id']]['region'] = $row['region'];
        }
    }else{
        echo "query execution failed because of". mysqli_error($connection);
    }
}else{
  echo "db connection error because of". mysqli_connect_error();
}
?>

<?php 
if(count($final_data) >0){ // check array have some value or not?
foreach($final_data as $final_dat){?>
    <p><?php echo $final_dat['name'] ?></p><!-- print out values -->
    <p><?php echo $final_dat['profilename'] ?></p>
    <p><?php echo $final_dat['profileurl'] ?></p>
    <p><?php echo $final_dat['avatar'] ?></p>
    <p><?php echo $final_dat['region'] ?></p>
<?php }}?>

【讨论】:

  • 这解决了我的问题。谢谢@Anant :)
  • 表示基于行ID创建数组索引,该行ID始终唯一,因此在任何情况下都不会发生覆盖,您将获得所有数据
猜你喜欢
  • 1970-01-01
  • 2015-12-27
  • 2021-08-12
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
相关资源
最近更新 更多