我正在尝试通过PHP中的$ _POST获取一些信息,基本上我正在使用它:
$item_name1 = $_POST['item_name1'];
$item_name2 = $_POST['item_name2'];
$item_name3 = $_POST['item_name3'];
$item_name4 = $_POST['item_name4'];
我想用mysql在表字段中插入每个项目名称,所以我试图尝试使用while php循环,所以我没有很多$ item_name变量:
$number_of_items = $_POST['num_cart_items'];
$i=1;
while($i<=$number_of_items)
{
$test = $_POST['item_name'. $i''];
$i++;
}
上面的代码失败了,解释起来非常棘手,但代码应该找到所有item_name $ _POST并将其作为mysql插入的变量。
$ _POST ['num_cart_items']是项目总数。
该代码适用于正在进行购物车的PayPal IPN监听器。
帮助表示赞赏。
编辑:
我进一步了解了我刚才意识到的文件:
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
如何插入$ _POST ['item_name1'],$ _POST ['item_name2']作为mysql插入的变量?
答案 0 :(得分:5)
你的循环在每次迭代时都有效地覆盖了$test
变量:
$test = $_POST['item_name'. $i''];
如果要将它们放入数组中,请更改为$test[]
。它还包含brian_d
提到的解析错误。
使用表单发送变量num_cart_items
听起来有点可怕。你是用JavaScript设置的吗?用户可以操纵它。你不应该依赖它。我相信你需要的是将表格作为:
<input type="text" name="item_name[]" />
请注意名称末尾的方括号。这将在$_POST
数组中创建一个数组:$_POST['item_name']
将包含所有项目的名称。
然后,您的数据库结构如何?我想你想在一个查询中插入它们:
INSERT INTO ORDERS VALUES (item_name_1, ...), (item_name_2, ...)
如果是这样,你可以从数组中创建一个字符串:
$query = 'INSERT INTO ORDERS VALUES ';
foreach($_POST['item_name'] as $item_name){
$query .= '('.stripslashes($item_name). /*put other column values*/ '),';
}
$query = rtrim($query, ',');
请注意,使用addslashes
不足以保护您免受SQL注入。
答案 1 :(得分:4)
$test = $_POST['item_name'. $i''];
是语法错误
删除结束''
,使其变为:
$test = $_POST['item_name'. $i];