【发布时间】:2017-12-07 15:02:50
【问题描述】:
我正在尝试将此 $_REQUEST 数据插入到我的 MySQL 数据库中。代码如下:
foreach ($_REQUEST as $value)
{
$sql = "INSERT INTO beer (b_beer) VALUES ('$value');";
if(mysqli_query($connection, $sql))
{
echo "Records added successfully.";
}
else
{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($connection);
}
}
MySQL 成功插入到我的“啤酒”表中,但也创建了 2 条空记录。发生这种情况有什么原因吗?
【问题讨论】:
-
是的,foreach 正在这样做。查询应该在它之外。那,和/或你有一个空键。
-
将您的 foreach 更改为具有
as $key=>$value)并将键值添加到您的数据库以及('$key = $value')。将显示它尝试添加的字段。 -
在
REQUEST中有3 个值,您的表单中有3 个inputs和name属性。 PHP 不知道您只想保存其中之一。在这里使用if条件或者忘记foreach循环,真的不需要。 -
您的代码容易受到SQL injection 攻击。您应该通过mysqli 或PDO 驱动程序使用带有绑定参数的准备好的语句。 This post 有一些很好的例子。
-
在将数据插入数据库之前检查 $_REQUEST 数组的组成。使用 print_r($_REQUEST)