另一个html表未使用mysql/PHP填充


Another....html table not populating with mysql/PHP

我仔细查看了网站,得出的结论是我遇到了很多人都会遇到的问题,但我看到的答案似乎都不起作用!

基本上,我尝试从存储在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上学习了无数教程,但由于某种原因,代码仍然无法工作。有人能帮忙吗?

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

$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>";

如果代码看起来真的像这样,请删除do-while循环和您在$mydata上迭代的所有内容,因为您浪费了内部mysql计数器

这意味着在第二个循环中,您的$result已经在末尾了,或者您再次查询,或者您将所有结果推送到一个数组中,以便多次使用

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

foreach($product as $sProduct){
// User $sProduct to access that single product.
}

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

如果它对你有用,试试这个:

<?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>

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