将数组从表单插入MySQL数据库

Insert array into MySQL database from form

提问人:vascoder 提问时间:9/26/2020 最后编辑:Dharmanvascoder 更新时间:9/26/2020 访问量:71

问:

我尝试将表单中的数组数据插入到我的数据库中,但只得到最后一行:

我想将这些数组插入数据库:

ProductID Quantity
2            10
3            5
4            8

但我在我的数据库中只看到这些数据:

ProductID Quantity
4            8

请参阅下面的代码:

define('DB_SERVER','localhost');
define('DB_USER','root');
define('DB_PASS' ,'');
define('DB_NAME','store');
$con = mysqli_connect(DB_SERVER,DB_USER,DB_PASS,DB_NAME);
// Check connection
if (mysqli_connect_errno())
{
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$productID=$_POST['product_id'];
$IssueQty=$_POST['quantity'];

$inventory=mysqli_query($con,"insert into inventory_log(productID, IssueQty)
values('$productID', '$IssueQty')");
PHP 数组 mysqli 插入

评论

0赞 Manish Pareek 9/26/2020
您只插入一组行,那么您如何期望数据库显示 3 行?
0赞 Your Common Sense 9/26/2020
你能插入一行吗?如果是这样,你能在一个循环中运行完全相同的代码吗?
0赞 Jerson 9/26/2020
使用 foreach , foreach ($_POST as $key => $value)
2赞 Dharman 9/26/2020
警告:您对 SQL 注入持开放态度,并且应该使用参数化的预准备语句,而不是手动构建查询。它们由 PDOMySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,您仍然面临数据损坏的风险逃跑是不够的!

答:

2赞 Manish Pareek 9/26/2020 #1

多个 INSERT 示例:

$statement = $con->prepare("INSERT INTO inventory_log (productID, IssueQty)
VALUES (?,?)");
foreach ($_POST as $row) {
    $statement->bind_param($row['product_id'],$row['quantity']);
    $statement->execute();
}

评论

0赞 vascoder 9/26/2020
感谢 mPareek 的帮助。只是想知道如何替换它:(?,?)
0赞 Dharman 9/26/2020
你是什么意思替换?这些是占位符,这就是 SQL 的样子。您必须在循环中绑定参数(?,?)
0赞 Manish Pareek 9/26/2020
您无需更换它。它们将自动替换为 。这称为预准备语句,是一种更安全的查询编写方式。请参阅此mysqli_preparebind_param()