循环访问URL参数并添加到mySQL

时间:2013-12-17 12:41:22

标签: php mysql loops foreach get

我正在建造一个有各种产品选择的购物篮。我用get动作创建了我的表单:

<form method="get" action="">
<input name="category" type="hidden" value="<?php echo $category; ?>">
<input name="product_option_id" type="hidden" value="<?php echo $showProductOptions['id']; ?>">
<input type="text" maxlength="3" size="2" value="1" class="formqty" id="quantity_wanted" name="qty">

“&GT;          

发送时,URL如下所示:

  ?

menu.php类别=水果和甜点&安培; product_option_id = 13&安培;数量= 1&安培; product_option_id = 14&安培;数量= 2及formadd =

我需要帮助的是将产品选项ID和数量添加到mySQL表中。我已创建此脚本但它没有添加到数据库中?我也没有收到任何错误消息?

if(isset($_GET['formadd'])) {
foreach ($_GET as $productoptionid => $quantity) {
if(is_numeric($productoptionid) && is_numeric($quantity)) {
mysql_query(" INSERT INTO standard_basket SET session_id = '".$sessionid."', product_option_id = '".$productoptionid."', quantity = '".$quantity."'") or die(mysql_error());
}
}
}

有人可以帮忙吗?非常感谢!

2 个答案:

答案 0 :(得分:1)

问题在于你的预言 -

foreach ($_GET as $productoptionid => $quantity) {
   if(is_numeric($productoptionid) && is_numeric($quantity)) {

使用您的给定网址参数,您将拥有以下值

$productoptionid => product_option_id
$quantity => 13

$productoptionid => qty
$quantity => 1

$productoptionid => product_option_id
$quantity => 14

$productoptionid => qty
$quantity => 2

因为$productoptionid是字符串(并且它们与qty没有关联),所以INSERT永远不会执行,因为is_numeric($productoptionid)始终为假。


一种方法是使用product_option_id作为输入名称数组键name="qty[<?php echo $showProductOptions['id']; ?>]" -

<form method="get" action="">
<input name="category" type="hidden" value="<?php echo $category; ?>">
<input type="text" maxlength="3" size="2" value="1" class="formqty" id="quantity_wanted" name="qty[<?php echo $showProductOptions['id']; ?>]">

那么你的foreach循环可能是 -

if(isset($_GET['formadd'])) {
    foreach ($_GET['qty'] as $productoptionid => $quantity) {
        if(is_numeric($productoptionid) && is_numeric($quantity)) {
            mysql_query(" INSERT INTO standard_basket SET session_id = '".$sessionid."', product_option_id = '".$productoptionid."', quantity = '".$quantity."'") or die(mysql_error());
        }
     }
}

注意:mysql_已弃用。请查看http://php.net/manual/en/mysqlinfo.api.choosing.php,了解如何更新为mysqli_PDO

答案 1 :(得分:0)

您确定在循环中获得了正确的值吗? 因为作为参数列表,它会在第一次迭代时为您提供产品ID,在每秒中为您提供数量(如果数量为数量......)