0

私は「注文」ページを設定しました。これは非常に単純で、DBから過去の注文を生成するためにforeachループが必要です。各ループ内で、各アイテムを分離するための展開(、)が必要です。次に、各アイテムから詳細を引き出すための別の展開(-)が必要です。foreachループの各反復の最後に「警告:mysql_num_rows()はパラメーター1を必要とします」というエラーメッセージが表示される理由を誰かに教えてもらえないでしょうか。コードはまだ機能しているので、特に混乱します。エラーが本当の場合は、そうすべきではないと思います。

<?php
$sql = "SELECT * FROM orders WHERE store='$user'";  
$res = mysql_query($sql);

$arrOrders = array();
while ($row = mysql_fetch_array($res)) {
    array_push($arrOrders, $row);
}
?>

<table width="85%" align="center" border="0" cellpadding="5">
    <?php if (count($arrOrders) > 0) { ?>
    <?php foreach ($arrOrders as $key => $value) { ?>
        <tr>
            <td valign="top" style="font-weight: bold">
                ID #<?=$value['id']?>
            </td>
            <td valign="top" style="font-weight: bold">
                Status: <?=$value['status']?>
            </td>
            <td valign="top" style="font-weight: bold">
                Order #<?=$value['order_ref']?>
            </td>
            <td align="left" valign="top" style="font-weight: bold">
                <?php
                $tmpProds = explode(',', $value['products']);
                foreach ($tmpProds as $key2 => $value2) {
                        $tmpProdInfo = explode('-', $value2);

                $sql2 = 'SELECT * FROM products_full WHERE id = ' . $tmpProdInfo[0];
                $res2 = mysql_query($sql2);

                if (mysql_num_rows($res2) > 0) { // THIS IS THE ROW THAT THE ERROR MESSAGE POINTS TO
                echo $tmpProdInfo[1] + $tmpProdInfo[2] . ' x <a href="item_details.php?id=' . mysql_result($res2, 0, 'id') . '">' . mysql_result($res2, 0, 'alpha_code') . ' (' . trim(mysql_result($res2, 0, 'description')) . ')</a><br /><br />';
                        }
                    }
                ?>
            </td>
        </tr>
        <tr>
            <td width="100%" colspan="5" align="center">
                <hr style="width: 100%" />
            </td>
        </tr>
    <?php } ?>
    <?php } else { ?>
    <tr>
        <td width="100%" align="center">
            There are currently no complete orders.
        </td>
    </tr>
    <?php } ?>
  </table>

よろしくお願いします。相対的なものはすべて含めたと思いますが、他に必要なものがあれば教えてください。

ジョー

4

1 に答える 1

0

これを試して:

$sql2 = 'SELECT * FROM products_full WHERE id = '.$tmpProdInfo[1].'';
if (count($res2) > 0)

また、MySQL_num_rows を使用する場合は、接続を含める必要があることに注意してください。マニュアルを参照してください:

$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);
于 2012-05-17T11:30:11.417 に答える