0

我通过该站点进行了广泛的查看,并得出结论,我遇到了很多人都会遇到的问题,但我所看到的答案似乎都不起作用!

基本上,我试图从存储在 mySQL 表中的数据中填充一个 HTML 表。数据位于名为“类别”的表中。当我加载页面时,表格标题出现但没有表格数据。

我已经编写和重写了我的代码不少于 4 次 - 它作为“ul”或仅呈现为纯文本时可以正常工作,但是一旦我将其放入“表”中似乎就停止工作了!

这是我的代码:

<?php
include("includes/dbconnect.php"); //This works fine as tested on the page

$sql = "SELECT * FROM products";
$myData = mysql_query($sql) or die (mysql_error());
$product = mysql_fetch_array($myData);

?>

<html>
<head>
<title></title>
</head>
<body>
    //This plain text works
<?php do {
echo $product['title']." <br />"; 
} while ($product = mysql_fetch_array($myData));
//-----------------------------------------
    //Table - doesnt work
echo "<table border=1>
<tr>
    <th>Title</th>
    <th>Category</th>
    <th>Sport</th>
    <th>Team</th>
    <th>Price</th>
    <th>Shipping</th>
</tr>";
while ($product = mysql_fetch_array($myData)) {
    echo "<tr>";
    echo "<td>".$product['title']."</td>";
    echo "<td>" . $product['category'] . "</td>";
    echo "<td>" . $product['sport'] . "</td>";
    echo "<td>" . $product['team'] . "</td>";
    echo "<td>" . $product['price'] . "</td>";
    echo "<td>" . $product['shipping'] . "</td>";
    echo "</tr>";
}
echo "</table>";
?>


</body>
</html>

我真的束手无策,我已经通过无数的 YouTube 教程工作,但由于某种原因,代码仍然无法工作。任何人都可以帮忙吗?

4

4 回答 4

1

您已经mysql_fetch_array在代码顶部运行了一个 do while 循环。您不能多次提取结果行。相反,将所有返回的行推送到一个数组中:

$products = array();
while ($product = mysql_fetch_array($myData)) {
    $products[] = $product;
}

然后,您可以根据需要循环$products多次来构建您的页面。所以对于你的桌子,这看起来像:

echo "<table border=1>
<tr>
    <th>Title</th>
    <th>Category</th>
    <th>Sport</th>
    <th>Team</th>
    <th>Price</th>
    <th>Shipping</th>
</tr>";
foreach($products as $item) {

    echo "<tr>";
    echo "<td>" . $item['title'] . "</td>";
    echo "<td>" . $item['category'] . "</td>";
    echo "<td>" . $item['sport'] . "</td>";
    echo "<td>" . $item['team'] . "</td>";
    echo "<td>" . $item['price'] . "</td>";
    echo "<td>" . $item['shipping'] . "</td>";
    echo "</tr>";    

}
echo "</table>";
于 2012-08-22T06:26:56.623 回答
0

如果该代码真的看起来像这样,请删除 do-while 循环以及您迭代的所有内容,$mydata它会起作用,因为您浪费了内部 mysql-counter

意思是在第二个循环中你$result已经在最后,或者你再次查询或者你将所有结果推送到一个数组中以供多次使用

于 2012-08-22T06:27:24.847 回答
0

你已经用这个提取了一次数据......$product = mysql_fetch_array($myData); 所以只需将此数组与 foreach 循环一起使用......

foreach($product as $sProduct){
// User $sProduct to access that single product.
}
于 2012-08-22T06:32:53.923 回答
-1

您的代码包含许多错误和实现

如果它适合你,试试这个:

<?php
include("includes/dbconnect.php"); 
$sql = "SELECT * FROM products";
$myData = mysql_query($sql) or die (mysql_error());
?>
<html>
<head>
<title></title>
</head>
<body>
    //This plain text works
<?php 

if(mysql_num_rows ($myData) > 0)
{
    $html = "<table border=1><tr> 
                    <th>Title</th>
                    <th>Category</th>
                    <th>Sport</th>
                    <th>Team</th>
                    <th>Price</th>
                    <th>Shipping</th></tr>";

    while ($product = mysql_fetch_array($myData)) 
    {   
        $html .= "<tr>";
        $html .= "<td>".$product['title']."</td>";
        $html .= "<td>".$product['category']."</td>";
        $html .= "<td>".$product['sport']."</td>";
        $html .= "<td>".$product['team']."</td>";
        $html .= "<td>" . $product['shipping'] . "</td>";
        $html .=  "</tr>";
    }
    $html .=  "</table>";
    echo $html;
}
else
{
    echo "No Product Found";
}   
?>
</body>
</html>

如果这对你有用,你可以找出问题,或者我会解释:)

于 2012-08-22T06:49:38.143 回答