gpt4 book ai didi

php - 将输入数组形成到 MySQL DB

转载 作者:行者123 更新时间:2023-11-28 02:29:41 25 4
gpt4 key购买 nike

我有一个 html 表单,允许用户将设备添加到数据库中。一个用户可以添加多件设备,有时设备之间唯一不同的字段是库存编号MAC 地址

例如,他们可能想要添加 10 台具有相同硬件的戴尔 PC。他们可以动态添加Inventory NumberMAC Address 字段,而不是让他们提交 10 个表单。

表单输入看起来像这样;

<form method="POST" action="">
<input type="text" name="make">
<input type="text" name="model">
<input type="text" name="inv[]">
<input type="text" name="mac[]">
<input type="submit" name="submit">
</form>

我可以提交表单,print_r($_POST) 的输出是;

Array
(
[make] => Dell
[model] => Optiplex
[inv] => Array
(
[0] => 1544778
[1] => 3344558
[2] => 1644758
[3] => 9844558
)
[mac] => Array
(
[0] => 8877445
[1] => 3311554
[2] => 7788445
[3] => 3214857
)
)

在上面的示例中,我需要在 mysql 数据库中创建四个 个单独的记录。

考虑到我需要遍历这些值并单独插入它们,我有以下 PHP;

$arr_inv = $_POST['inv'];
$arr_mac = $_POST['mac'];

for ($i = 0; $i < count($arr_inv); $i++) {
$sql = "INSERT INTO table (make, model, inv, mac)
VALUES ('" . $make . "', '" . $model . "', '" . $arr_inv[$i] . "','" . $arr_mac[$i];
$stmt = DB::exec($sql);
}

虽然这确实有效,并且将 4 条单独的记录插入到数据库中,但这是最好的方法吗/我怎样才能让它更有效率?

请忽略代码中的任何安全漏洞,仍在努力。任何建议表示赞赏。

最佳答案

基本上,您可以将所有行合并到一个INSERT 查询中 - 确切的语法可能取决于您使用的数据库,但通常它应该如下所示:

INSERT INTO table (make, model, inv, mac)
VALUES
(make1, model1, inv1, mac1),
(make2, model2, inv2, mac2)

如果您必须执行大量查询 - 这可以显着提高性能。

UPD. 正如 @Vatev 所建议的那样,我删除了代码示例,因为它不包含任何数据转义和验证,因此它可能会导致某些项目中的潜在漏洞,所以我只留下共同的想法描述。

关于php - 将输入数组形成到 MySQL DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51723959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com