PHP foreach问题

时间:2013-01-24 15:24:24

标签: php html mysql foreach

我在编辑代码时遇到一些问题,无法使用PHP foreach函数。我下面的“transactiondata”div用于从我的表中提取交易信息。我想使用foreach()为表中的每一行创建一个新的div部分。然而,当编辑我的div以包含foreach()时,我抛出了一大堆错误,所以我回到了原点1.完成此操作的最佳方法是什么?

<?php
include('cn.php');
session_start();

$userUsername = $_SESSION['loggedInUser'];

$sql = "SELECT * FROM transactions WHERE
    UserID = '" . $userUsername . "'";
$result = mysql_query($sql, $cn) or
    die(mysql_error($cn));
$row = mysql_fetch_assoc($result);

$RequestBody = $row['RequestBody'];
$ResponseBody = $row['ResponseBody'];

parse_str($RequestBody);
parse_str($ResponseBody);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo $userUsername; ?>'s Profile - Test 2013</title>
<style>
    .userstatustext 
    {
        position: absolute;
        top: 0px; 
        right: 5px;
    }
    .transactiondata
    {
        position: absolute;
        padding: 5px;
        top: 170px;
        left: 75px;
        width: 900px;
        height: 400px;
        overflow-x: hidden;
        background: #B2B2B2;
        border: 1px solid black;
        word-break: break-all; 
        word-wrap: break-word;
    }
</style>    
</head>
<body>
    <table border="0" cellpadding="10">
      <tr>
        <td>
          <img src="../images/api_rat.png">
        </td>
        <td>
          <h1>Transactions - Test 2013</h1>
        </td>
      </tr>
    </table>
<div class="userstatustext">
    <h5>Welcome, <?php echo $userUsername; ?>!</h5>
    <h5><a href="logout.php">[LOGOUT]</a></h5>
</div>
<h3>Your most recent transactions:</h3>
<div class="transactiondata">
<p><h4>Timestamp: </h4><?php echo date("F j, Y g:i a", strtotime($TIMESTAMP));  ?></p>
<p><h4>Payment Status: </h4><?php echo $ACK; ?></p>
<?php 
if(isset($CORRELATIONID))
{
    echo "<p><h4>Correlation ID: </h4></p>";
    echo $CORRELATIONID; 
}
?>
<?php
if(isset($TRANSACTIONID))
{
    echo "<p><h4>Transaction ID: </h4></p>";
    echo $TRANSACTIONID; 
}
?>
<p><h4>Errors Returned (if any): </h4> 
    <a href="https://www.testsite.com/test/search.php?query=<?php echo $ERRORCODE; ?>&search=Search">
        <?php echo $ERRORCODE; ?>
    </a>
</p>
<p><h4>Request Body: </h4><?php echo $RequestBody; ?></p> 
<p><h4>Response Body: </h4><?php echo $ResponseBody; ?></p>
</div>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

可能您想输出查询返回的每一行。

因此请使用while代替所需的foreach

while($row = mysql_fetch_assoc($result)) {
    // DO YOUR STUFF HERE
}

我还建议不要使用mysql_*函数,因为它们现在已被弃用,而是使用PDO或至少使用mysqli_*

答案 1 :(得分:1)

而不是foreach你需要使用的是while(),所以你可以将结果提取到$ row变量中。

这样,对于查询发现的每一行,您将使用mysql_fetch_assoc将该行检索到$ row varible中,然后将该变量作为表的每个列的数组进行处理

我已修改您的代码以匹配此

<?php
include('cn.php');
session_start();

$userUsername = $_SESSION['loggedInUser'];

$sql = "SELECT * FROM transactions WHERE
    UserID = '" . $userUsername . "'";
$result = mysql_query($sql, $cn) or
    die(mysql_error($cn));

$RequestBody = $row['RequestBody'];
$ResponseBody = $row['ResponseBody'];

parse_str($RequestBody);
parse_str($ResponseBody);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo $userUsername; ?>'s Profile - Test 2013</title>
<style>
    .userstatustext 
    {
        position: absolute;
        top: 0px; 
        right: 5px;
    }
    .transactiondata
    {
        position: absolute;
        padding: 5px;
        top: 170px;
        left: 75px;
        width: 900px;
        height: 400px;
        overflow-x: hidden;
        background: #B2B2B2;
        border: 1px solid black;
        word-break: break-all; 
        word-wrap: break-word;
    }
</style>    
</head>
<body>
    <table border="0" cellpadding="10">
      <tr>
        <td>
          <img src="../images/api_rat.png">
        </td>
        <td>
          <h1>Transactions - Test 2013</h1>
        </td>
      </tr>
    </table>
<div class="userstatustext">
    <h5>Welcome, <?php echo $userUsername; ?>!</h5>
    <h5><a href="logout.php">[LOGOUT]</a></h5>
</div>
<h3>Your most recent transactions:</h3>
<div class="transactiondata">

<?php 
while ($row = mysql_fetch_assoc($result))
 {
?>
<p><h4>Timestamp: </h4><?php echo date("F j, Y g:i a", strtotime($row['TIMESTAMP']));  ?></p>
<p><h4>Payment Status: </h4><?php echo $row['ACK']; ?></p>
<?php 
    if(isset($row['CORRELATIONID']))
    {
        echo "<p><h4>Correlation ID: </h4></p>";
        echo $row['CORRELATIONID']; 
    }
    if(isset($row['TRANSACTIONID']))
    {
        echo "<p><h4>Transaction ID: </h4></p>";
        echo $row['TRANSACTIONID']; 
    }
}
?>
<p><h4>Errors Returned (if any): </h4> 
    <a href="https://www.testsite.com/test/search.php?query=<?php echo $ERRORCODE; ?>&search=Search">
        <?php echo $ERRORCODE; ?>
    </a>
</p>
<p><h4>Request Body: </h4><?php echo $RequestBody; ?></p> 
<p><h4>Response Body: </h4><?php echo $ResponseBody; ?></p>
</div>
</body>
</html>

希望这能解决你的问题