- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试通过 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 插入的变量?
最佳答案
您的循环在每次迭代中有效地覆盖了 $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 注入(inject)攻击。
关于php - 在 While PHP 问题中使用 $_POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7524277/
我是一名优秀的程序员,十分优秀!