在PHP问题中使用$ _POST

时间:2011-09-23 04:35:27

标签: php paypal while-loop paypal-ipn

我正在尝试通过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插入的变量?

2 个答案:

答案 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];