我希望下面的代码循环遍历两个不同的mysql表。外部while循环应该打印一个产品列表,每个table-row是一个新产品。内部while循环应该打印该产品的每个列变量。内部循环设置为查看$ tableheaders以获取有关要打印的列的指导。
内部循环是用外部循环数组中的内容回显表格单元格,内部循环数组指定它应该在外部数组中查找哪一列。
这是我的代码;
$tableheaders=mysql_query("SELECT * from `winetable`");
$products=mysql_query("SELECT * FROM `wines`");
while ($row=mysql_fetch_assoc($products)){
echo '<tr>';
while ($rowi=mysql_fetch_assoc($tableheaders)){
$column=$rowi['Title'];
echo '<td>';
echo $row[$column];
echo '</td>';
}
echo '</tr>';
}
所有这一切都是空白。
现在不使用mySQLi,因为我的WebMatrix在使用它时遇到了一些问题。我认为我的MySQL安装已损坏:)
答案 0 :(得分:0)
请阅读以下代码,了解我将如何调试您的代码。我还意识到你需要使用mysql_data_seek()重置一个数组:
$tableheaders=mysql_query("SELECT * from `winetable`");
$products=mysql_query("SELECT * FROM `wines`");
//check the number of results before looping
if(mysql_num_rows($tableheaders) > 0 && mysql_num_rows($products) > 0){
while ($row=mysql_fetch_assoc($products)){
echo '<tr>';
//check what is in the array
var_dump($row);
while ($rowi=mysql_fetch_assoc($tableheaders)){
//check what is in the array
var_dump($rowi);
$column=$rowi['Title'];
echo '<td>';
echo $row[$column];
echo '</td>';
}
echo '</tr>';
//reset the $tableheaders array pointer back to 0 for next loop
mysql_data_seek($tableheaders, 0);
}
}
答案 1 :(得分:0)
尝试这样的事情。 这样做你首先将结果加载到一个数组中,你可以进一步操作并随时重复使用......
<?php
$t = mysql_query("SELECT * FROM `winetable`");
$p = mysql_query("SELECT * FROM `wines`");
if(mysql_num_rows($p) > 0 && mysql_num_rows($t) > 0){
while ($row=mysql_fetch_assoc($p)){
$products[] = $row
}
while ($row=mysql_fetch_assoc($t)){
$tableheaders[] = $row;
}
foreach($products as $i => $product){ ?>
<tr><?php
foreach($tableheaders as $j => $tableheader){
?>
<td><?php echo $row[$tableheader['Title']]; ?></td><?php
}
?>
</tr><?php
}
}
?>
答案 2 :(得分:0)
查看您的代码时,我注意到您没有包含<table>
或</table>
(也许您已经拥有但未在您的问题中显示)。可以这么容易吗?某些浏览器(即我认为)在没有这些<table>
标记时不会显示表格。
包含
echo '<table>';
在第一个循环之前
和
echo '</table>';
在代码的末尾(循环之后)
你的htmlsource中是否有任何信息?
只是提示 我会尝试另一种方法来收集有关葡萄酒的信息......这将是创建一个记录集,其中包含所需的表格和输出信息。这将显着提高速度并增加更易读的代码。
类似的东西:
SELECT * FROM `wines` w LEFT JOIN `winetable` wt ON (w.id = wt.id)
当然,正如Theo Kouzelis所提到的,不要使用mysql_functions。