-2

我希望下面的代码循环遍历两个不同的 mysql 表。外部 while 循环应该打印一个产品列表,每个表行都是一个新产品。内部 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 安装已损坏 :)

4

3 回答 3

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);
    }
}
于 2013-03-24T21:08:44.097 回答
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
    }
}

?>
于 2013-03-24T21:24:33.657 回答
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。

于 2013-03-24T21:30:28.100 回答