任何人都可以看到以下代码有什么问题吗?
我正在尝试从表单中对2个数组执行foreach循环。
表格代码:
<td>
<input type="checkbox" name="PR[]" value="DP01">Version 1 Daypack - $55.00<br/>
<input type="checkbox" name="PR[]" value="DP02">Version 2 Daypack - $30.00<br/>
</td>
<td>
<input type="text" name="QTY[]" size = "2"/><br/>
<input type="text" name="QTY[]" size="2"/><br/>
</td>
PHP代码:
if(!empty($_POST['PR']))
{
foreach (array_combine($_POST['PR'], $_POST['QTY']) as $PRS => $QTYS)
{
$sql="INSERT INTO ORDER_TBL (TRANSACTION_ID, CUSTOMER_ID, PRODUCT_ID, QUANTITY)
VALUES ('','$_SESSION[user]','$PRS,'$QTYS)";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
exit;
}
}
}
答案 0 :(得分:1)
这种方式并不是很好。如果文本字段为空或有内容,则会发布文本字段,而复选框仅在选中时发布。这将导致数组的长度不同,array_combine将失败。
执行print_r($ _ POST),您将看到发布了什么输入。
这甚至没有考虑到这将造成的安全噩梦。