使用PHP从Query查询的Foreach循环

时间:2014-03-27 18:18:50

标签: php mysql

我的php上有一个查询,只打印出一行的结果,我需要打印出每个用户的所有行。

这是php:

<?php
    // see if the form has been completed
    include_once("php_includes/check_login_status.php");
    //include_once("php_includes/db_conx.php");
    // Initialize any variables that the page might echo
    $username = "";
    $weight = "";
    $weighthist = "";
    $id = "";       

    if(isset($_GET["u"])){
        $username = preg_replace('#[^a-z0-9]#i', '', $_GET['u']);
    } 

    $sql = "SELECT users.*, weighthistory.* FROM users JOIN weighthistory USING(id)";

    $user_query = mysqli_query($db_conx, $sql);


    // check if the user exists in the database
    while ($row = mysqli_fetch_array($user_query, MYSQLI_ASSOC)) {
        $id = $row ["id"];
        $username = $row ["username"];
        $weight = $row["weight"];
        $weighthist = $row["weighthist"];
        $point_hist = $row["point_hist"];

        }

        // this is to calculate points score
        $calweight = $weight - $weighthist;     
        $points = $calweight * 10;



        $res = mysqli_query($db_conx,'SELECT sum(point_hist) FROM points_history');
        if (FALSE === $res) die("Select sum failed: ".mysqli_error);
        $row = mysqli_fetch_row($res);
        $sum = $row[0];




?>  

这是HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Profile Update: <?php echo $u; ?></title>
    <link rel="icon" href="favicon.ico" type="image/x-icon">
    <link rel="stylesheet" type="text/css" href="style.css">
    <script src="js/main.js"></script>
    <script src="js/javascript.js"></script>
    <script src="js/ajax.js"></script>
    <style type="text/css">
        #updateform{
        margin-top:24px;    
        }
        #updateform > div {
            margin-top: 12px;   
        }
        #updateform > input {
            width: 200px;
            padding: 3px;
            background: #F3F9DD;
        }       
    </style>

</head>
<body>
    <p>&nbsp;</p>
    <?php include_once("template_pageTop.php"); ?>
    <div id="pageMiddle">       
    <div id="usernamecss"> Username: <?php echo $username; ?></div>

    <table width="100%" border="0">
      <tr>
        <td>Name</td>
        <td>Weight</td>
        <td>Rank</td>
        <td>Points</td>
      </tr>
      <tr>
        <td><?php echo $username ?></td>
        <td><?php echo $weight?></td>
        <td><?php echo $rank?></td>
        <td><?php echo $sum?></td>
      </tr>
      </table>
    <p>&nbsp;</p>
    <strong></strong>
    <a href="user.php<?php echo "?u=",$username;?>">Go to Profile</a>
    </form>
    </div>
    <?php include_once("template_pageBottom.php"); ?>
</body>
</html>

我是新手,所以如何打印所有用户ID的所有行,我明白我必须使用foreach循环。

1 个答案:

答案 0 :(得分:1)

这就是你可以做到的......

PHP文件

<?php
    // see if the form has been completed
    include_once("php_includes/check_login_status.php");
    //include_once("php_includes/db_conx.php");
    // Initialize any variables that the page might echo
    $username = "";
    $weight = "";
    $weighthist = "";
    $id = "";       

    if(isset($_GET["u"])){
        $username = preg_replace('#[^a-z0-9]#i', '', $_GET['u']);
    } 

    $sql = "SELECT users.*, weighthistory.* FROM users JOIN weighthistory USING(id)";

    $user_query = mysqli_query($db_conx, $sql);


    // check if the user exists in the database
    while ($row = mysqli_fetch_assoc($user_query)) {
        $id = $row ["id"];
        $username = $row ["username"];
        $weight = $row["weight"];
        $weighthist = $row["weighthist"];
        $point_hist = $row["point_hist"];

        // this is to calculate points score
        $calweight = $weight - $weighthist;     
        $points = $calweight * 10;

        $res = mysqli_query($db_conx,'SELECT sum(point_hist) FROM points_history');
        if (FALSE === $res) die("Select sum failed: ".mysqli_error);
        $row = mysqli_fetch_row($res);
        $sum = $row[0];

        ?>
        <div id="pageMiddle">       
            <div id="usernamecss"> Username: <?php echo $username; ?></div>

            <table width="100%" border="0">
                <tr>
                    <td>Name</td>
                    <td>Weight</td>
                    <td>Rank</td>
                    <td>Points</td>
                </tr>
                <tr>
                    <td><?php echo $username ?></td>
                    <td><?php echo $weight?></td>
                    <td><?php echo $rank?></td>
                    <td><?php echo $sum?></td>
                </tr>
            </table>
            <p>&nbsp;</p>
            <strong></strong>
            <a href="user.php<?php echo "?u=",$username;?>">Go to Profile</a>
        </form>
    </div>
        <?php
    }
?> 

HTML文件

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Profile Update: <?php echo $u; ?></title>
    <link rel="icon" href="favicon.ico" type="image/x-icon">
    <link rel="stylesheet" type="text/css" href="style.css">
    <script src="js/main.js"></script>
    <script src="js/javascript.js"></script>
    <script src="js/ajax.js"></script>
    <style type="text/css">
        #updateform{
        margin-top:24px;    
        }
        #updateform > div {
            margin-top: 12px;   
        }
        #updateform > input {
            width: 200px;
            padding: 3px;
            background: #F3F9DD;
        }       
    </style>

</head>
<body>
    <p>&nbsp;</p>
    <?php include_once("template_pageTop.php"); ?>
    <?php include_once("template_pageBottom.php"); ?>
</body>
</html>

编辑:

如果username是points_history表中的列...那么您可以更改此

$res = mysqli_query($db_conx,'SELECT sum(point_hist) FROM points_history');
if (FALSE === $res) die("Select sum failed: ".mysqli_error);
$row = mysqli_fetch_row($res);
$sum = $row[0];

到这个

$query = "SELECT sum(point_hist) FROM points_history WHERE username = $username";
$res = mysqli_query($db_conx, $query);
$row = mysqli_fetch_row($res);
$sum = $row[0];