仅在html表中显示数组的最后一个结果(php、mysql)
我有两个阵列,当echo显示出我想要的内容时(查看测试站点)。我试图将它们都放入一个html表中,但它只显示最后一个条目。我已经将整个数组代码放入表中,它运行良好(尽管它们都在同一行中,并且没有分开),但由于它被用于html电子邮件中,我不确定这是否安全?如果这是一个非常简单的修复,我很抱歉,因为我对php/mysql还不太熟悉,所以现在简单的事情似乎是不可能的。我也知道我可以毫无疑问地将这两种阵法结合起来,但我现在正在念一个吻咒,这对我来说是最容易理解的。任何帮助都将不胜感激。谢谢仅在html表中显示数组的最后一个结果(php、mysql),php,mysql,html,Php,Mysql,Html,我有两个阵列,当echo显示出我想要的内容时(查看测试站点)。我试图将它们都放入一个html表中,但它只显示最后一个条目。我已经将整个数组代码放入表中,它运行良好(尽管它们都在同一行中,并且没有分开),但由于它被用于html电子邮件中,我不确定这是否安全?如果这是一个非常简单的修复,我很抱歉,因为我对php/mysql还不太熟悉,所以现在简单的事情似乎是不可能的。我也知道我可以毫无疑问地将这两种阵法结合起来,但我现在正在念一个吻咒,这对我来说是最容易理解的。任何帮助都将不胜感激。谢谢 <?
<?php
//Get Order Codes
foreach ($ids as $id) {
$sqlcode = "SELECT od_code FROM tbl_order_code WHERE pd_id = $id LIMIT 1";
$result = mysql_query($sqlcode);
while($row = mysql_fetch_assoc($result)) {
$codes['codes'] = $row['od_code'];
}
echo "".$codes['codes']."<br />";
}
//Get Product Name
foreach ($ids as $id) {
$sqlname = "SELECT pd_name FROM tbl_product WHERE pd_id = $id";
$result = mysql_query($sqlname);
while($row = mysql_fetch_assoc($result)) {
$names['names'] = $row['pd_name'];
}
echo "".$names['names']."<br />";
}
?>
<table width='550' border='1' align='center' cellpadding='5' cellspacing='1'>
<tr>
<td>Description</td>
<td>Code</td>
</tr>
<tr>
<td> <?php echo "". $names['names'].":"."<br>"?> </td>
<td> <?php echo "". $codes['codes']."<br>"?> </td>
</tr>
</table>
描述
代码
$names['names'][=$row['pd_name'];
或如评论中所建议:
while($row = mysql_fetch_assoc($result)) {
$names['names'] = $row['pd_name'];
$codes['codes'] = $row['pd_code'];
?>
<tr>
<td> <?php echo "". $names['names'].":"."<br>"?> </td>
<td> <?php echo "". $codes['codes']."<br>"?> </td>
</tr>
<?php } ?>
while($row=mysql\u fetch\u assoc($result)){
$names['names']=$row['pd_name'];
$code['code']=$row['pd_code'];
?>
请尝试使用PDO与mysql进行交互您必须在表中的数组中进行迭代,就像在表标记上方进行迭代一样。您正在使用
foreach($id作为$id)
在foreach中生成要填充的表
或者使用2d数组$name和$code,计算数组大小并循环表结构以计算次数,这是一个更好的解决方案
更改逻辑,以便只使用一个SQL查询并使用联接
SELECT p.pd_name,
oc.od_code
FROM tbl_product p
LEFT JOIN tbl_order_code oc ON oc.pd_id = p.pd_id
WHERE p.pd_id = $id
因此,使用PDO时,应如下所示:
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$stmt = $dbh->prepare("
SELECT p.pd_name,
oc.od_code
FROM tbl_product p
LEFT JOIN tbl_order_code oc ON oc.pd_id = p.pd_id
WHERE p.pd_id = ?");
if ($stmt->execute(array($id))) {
while ($row = $stmt->fetch()) {
// print out table rows here
}
}
即时修复(恶心)
这应该可以解决你眼前的问题,但是有一个更好的方法
<?php
foreach ($ids as $id) {
$sqlcode = "SELECT od_code FROM tbl_order_code WHERE pd_id = $id LIMIT 1";
$result = mysql_query($sqlcode);
$codes = array();
while($row = mysql_fetch_assoc($result)) {
$codes[] = $row['od_code'];
}
//Get Product Name
foreach ($ids as $id) {
$sqlname = "SELECT pd_name FROM tbl_product WHERE pd_id = $id";
$result = mysql_query($sqlname);
$names = array();
while($row = mysql_fetch_assoc($result)) {
$names[] = $row['pd_name'];
}
}
?>
<table width='550' border='1' align='center' cellpadding='5' cellspacing='1'>
<tr>
<td>Description</td>
<td>Code</td>
</tr>
<?php foreach($names as $key => $name): ?>
<tr>
<td> <?php echo $name .":"."<br>"?> </td>
<td> <?php echo $codes[$key]."<br>"?> </td>
</tr>
<?php endforeach; ?>
</table>
描述
代码
将表格代码放入while循环中
<?php
foreach ($ids as $id) {
$sqlcode = "SELECT od_code FROM tbl_order_code WHERE pd_id = $id LIMIT 1";
$result = mysql_query($sqlcode);
$codes = array();
while($row = mysql_fetch_assoc($result)) {
$codes[] = $row['od_code'];
}
//Get Product Name
foreach ($ids as $id) {
$sqlname = "SELECT pd_name FROM tbl_product WHERE pd_id = $id";
$result = mysql_query($sqlname);
$names = array();
while($row = mysql_fetch_assoc($result)) {
$names[] = $row['pd_name'];
}
}
?>
<table width='550' border='1' align='center' cellpadding='5' cellspacing='1'>
<tr>
<td>Description</td>
<td>Code</td>
</tr>
<?php foreach($names as $key => $name): ?>
<tr>
<td> <?php echo $name .":"."<br>"?> </td>
<td> <?php echo $codes[$key]."<br>"?> </td>
</tr>
<?php endforeach; ?>
</table>