使用下面的代码我让人们填写他们想要的披萨数量,然后使用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'];
}
}
答案 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());
}