-4

我在编辑代码以使用 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>
4

2 回答 2

1

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

因此使用while而不是期望foreach

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

我还建议不要使用mysql_*现在已弃用的函数,而是使用PDO或至少mysqli_*代替。

于 2013-01-24T15:29:28.307 回答
1

您需要使用的不是 foreach,而是 while(),这样您就可以在有结果时将结果提取到 $row 变量中。

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

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

<?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>

希望这能解决你的问题

于 2013-01-24T15:31:43.103 回答