在PHP问题中使用$\ POST
我正在尝试通过PHP中的$\u POST获取一些信息,基本上目前我正在使用:在PHP问题中使用$\ POST,php,paypal,while-loop,paypal-ipn,Php,Paypal,While Loop,Paypal Ipn,我正在尝试通过PHP中的$\u 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\u nam
$item_name1 = $_POST['item_name1'];
$item_name2 = $_POST['item_name2'];
$item_name3 = $_POST['item_name3'];
$item_name4 = $_POST['item_name4'];
我想用mysql在一个表字段中插入每个项目名称,因此我尝试使用while php循环,这样我就没有太多的$item\u name变量:
$number_of_items = $_POST['num_cart_items'];
$i=1;
while($i<=$number_of_items)
{
$test = $_POST['item_name'. $i''];
$i++;
}
如何插入$\u POST['item\u name1']、$\u POST['item\u name2']作为mysql插入的变量?
$test=$\u POST['item\u name'.$i']代码>是一个语法错误。
移除末端”
,使其成为:
$test=$\u POST['item\u name.$i]
您的循环在每次迭代中有效地覆盖了$test
变量:
$test = $_POST['item_name'. $i''];
如果要将它们放入数组中,请更改为$test[]
。它还包含brian\u d
提到的解析错误
有一个随表单发送的变量num\u cart\u items
,听起来有点吓人。你是用JavaScript设置的吗?用户可以操纵它。你不应该依赖它。我相信您需要的是将表单设为:
<input type="text" name="item_name[]" />
如果是,则可以从数组中生成字符串:
$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注入。“上述代码失败”:您能否详细说明失败的行为是什么以及是否收到任何错误消息?不确定如何使用响应框中的代码,我在问题中进行了编辑above@MattStrange我不能完全肯定你在问什么。在foreach循环之外,您可以创建一个数组$clean_values=array()
,然后在循环中$clean_values[$key]=urlencode(stripslashes($value))
然后在使用SQL时,使用$clean\u值
array@MattStrange和`(tilde/back quote key)在注释中包含文本格式代码我希望对post数组部分加1,但对于数据库部分,最好使用PDO和参数化查询,因为这样更安全。有许多可能的改进。我只是回答一个特别的问题。准备好的语句也比以这种方式创建查询字符串要好得多……如果要在数据库中插入内容,请在从数据库检索内容后使用addslashes()
,以及stripslashes()
。最好的解决方案是mysql\u real\u escape\u string()
@giorgio I mentaddslashes
:)但你完全正确。1mysql_real_escape_string()`如果不使用准备好的statemenst或存储过程,则应使用
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, ',');