显示来自 SQL 的数据时遇到问题,它不显示


Having trouble displaying data from SQL, it doesnt display

我在显示$row[product_name]时遇到问题,它说空白,而$row 2['index']似乎正在查找所有数据正在显示,这里似乎有什么问题? 或者在 while 语句中放入两个参数是非法的,有什么见解吗?

$sql = mysql_query("SELECT * FROM product_detail LIMIT 5") or die(mysql_error());
$sql2 = mysql_query("SELECT * FROM product LIMIT 5") or die(mysql_error());

if($sql && $sql2){
while($row = mysql_fetch_array($sql) && $row2 = mysql_fetch_array($sql2)){
 $product_name = $row["product_name"]; echo $row["product_name"] ;
 $product_id = $row2["product_id"];
 $product_qty = $row2["balance_qty"];
 $product_price = $row2["unit_price"];  

                    echo '  <tr>
                            <td>'.$product_id.'</td>
                            <td>'.$product_name.'</td>
                            <td>'.$product_price.'</td>
                            <td>'.$product_qty.'</td>
                           </tr><br/>';

    }

使用类似代码的单个查询将使您回到游戏中:

$sql = "SELECT p.product_id, p.product_name, d.unit_price, d.balance_qty
FROM product AS p
JOIN product_detail AS d ON (d.product_id=p.product_id)
LIMIT 5";
$result =mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result)){
    echo '  <tr>
    <td>'.$row['product_id'].'</td>
    <td>'.$row['product_name'].'</td>
    <td>'.$row['unit_price'].'</td>
    <td>'.$row['balance_qty'].'</td>
    </tr>';
}  

我相信您在这里有一个操作顺序(优先级)问题。 尝试更改

while($row = mysql_fetch_array($sql) && $row2 = mysql_fetch_array($sql2)){

while(($row = mysql_fetch_array($sql)) && ($row2 = mysql_fetch_array($sql2))){

此外,如果您在看到 $sql2 中的所有记录之前用完了 $sql 中的记录,则循环将不会获取下一个$row2

另外,是否有理由不能使用一个查询执行此操作?

有什么意义:

$product_name = $row["product_name"];

只需直接使用 $row["product_name"]。

在进入循环之前,还要对此进行检查:

echo "FIRST: ".mysql_num_rows($sql);
echo "SECOND: ".mysql_num_rows($sql2);

它们具有相同的行数? 否则,您将进入@Umbrella所说的内容。