我正在建造一个有各种产品选择的购物篮。我用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());
}
}
}
有人可以帮忙吗?非常感谢!
答案 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,在每秒中为您提供数量(如果数量为数量......)