从循环中的表读取

时间:2011-06-10 16:45:33

标签: php mysql

使用下面的代码我让人们填写他们想要的披萨数量,然后使用get将所选的披萨ID传递给url。

<?php // some code that connects to database ?>
<table>

        <form method="get" action="oder_process.php">
                <?php
                while (list($pizzaId, $pizzaName, $pizzaNumber, $pizzaPrice) = mysql_fetch_row($resultaat))
                        {

                            echo        "<tr>
                                        <td>".$pizzaName."</td>
                                        <td>".$pizzaNumber."</td>
                                        <td>".$pizzaPrice."</td> 
                                        <td> <input type='text' name='pizzas[$pizzaId]'                   value='$qty' size='3' /></td>
                                        </tr>";
                        }
                mysql_close($db);        
                ?>
            <input type="submit" value="Bestel!" />
        </form>
    </table>

现在显示填充量的披萨ID工作得很好。但是我还想从数据库中读取比萨饼名称或描述等其他列。然而,我在下面做的不是这样做的。任何想法?
order_process.php文件的一部分:

echo "Your order: <br />";


            foreach ($_GET['pizzas'] as $pizzaId => $qty)    
            {
                if ($qty > 0)
                echo $pizzaId." ".$qty."<br />";
                $pizzaSql = mysql_query("SELECT * FROM pizzas where pizza_id =       $pizzaId");
                while ($row = mysql_fetch_assoc($pizzaSql))
                {
                    echo $row['pizza_name'];
                }
            }

2 个答案:

答案 0 :(得分:0)

为什么foreach()?你能不能......

if ( is_numeric( $_GET['pizzaid'] ) ) {
    $pizzaSql = sprintf("SELECT * FROM orders WHERE pizza_id=%d",$_GET['pizzaid']);
    $pizzaQuery = mysql_query($pizzaSql);
    $numPizzas = mysql_num_rows( $pizzaQuery );
    while ( $order = mysql_fetch_array($pizzaQuery,MYSQL_ASSOC) ) {
        if ( $numPizzas > 0 ) {
            echo $orderVariables;
        } else {
            echo 'Error: no order exists for that ID thingy';
        }
    }
}

我添加了一些小的验证,假设披萨/订单ID是一个数值。我不相信任何从$ _GET数组进入脚本的内容,而不需要先进行一些严格的数据验证

答案 1 :(得分:0)

你可以尝试在测试中查看以确保查询按预期工作吗

$pizzaSql = mysql_query("SELECT * FROM pizzas where pizza_id = $pizzaId");

if (mysql_error()) {
   die(mysql_error());
}