【发布时间】:2013-05-27 04:19:41
【问题描述】:
谁能看出下面的代码有什么问题?
我正在尝试对表单中的 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;
}
}
}
【问题讨论】:
-
安全建议:转义所有用户输入。阅读有关 sql 注入的信息。
-
$TGS 是否在别处定义?这可能会导致 Product_Id 的 nul 值。这出了什么问题 - 输出与预期有何不同?错误代码? - SQL 也是错误的 - '$TGS,'$QTYS 应该是 '$TGS','$QTYS'
-
您没有执行查询。如果您仍然不使用密钥,那么使用 array_combine 有什么意义?
-
@ZsoltSzilagy 这是一个很好的图像来表示:xkcd.com/327
-
@RobertSeddon-Smith Typo,我编辑了上面的代码。