我在编辑代码时遇到一些问题,无法使用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>
答案 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>
希望这能解决你的问题