gpt4 book ai didi

php - 同时插入多行

转载 作者:行者123 更新时间:2023-11-29 05:39:59 24 4
gpt4 key购买 nike

PHP 脚本正在根据来自 mysql 数据库的数据生成下表面板。表格的每个单元格都包含一个复选框,用于设置对某些“区域”的访问。我的复选框的名称遵循特定规则:u[user_id]a[area_name] 并且我想获取所有已设置的 $_POST,并将它们及其值保存在数据库中。

区域的数量是固定的,但是用户的数量是天天变化的。我必须在其中保存表状态的表是:user_id、current_date、area1、area2、area3、area4、area5、.. area25。

问题是我不知道如何将这个表保存到数据库中。现在我为每个用户做了一个插入,我认为它必须有更好的解决方案,因为这需要太多时间。

<form name="foo" method="post" action="saveme.php" />    
<table><tr>
<td>name</td><td>area1</td><td>area2</td><td>area3</td><td>area4</td>
</tr>
<tr>
<td>John Smith</td>
<td><input type="checkbox" value="12" name="u1a1" checked /></td>
<td><input type="checkbox" value="13" name="u1a2" /></td>
<td><input type="checkbox" value="16" name="u1a3" /></td>
<td><input type="checkbox" value="21" name="u1a4" checked /></td>
</tr>
</table><input type="submit" value="Save" /> </form>

最佳答案

我认为这应该可以解决问题。但是,当我看到像“area1、area2、... area25”这样的字段时,我倾向于认为可能有更好的解决方案。也许该表应该改为包含字段“user_id、current_date、area_id、area”?

$users = array();
foreach ($_POST as $key => $value) {
$matches = null;
if (preg_match('/^u(\d+)a(\d+)$/', $key, $matches)) {
$user_id = $matches[1];
$area_id = $matches[2];
if (!isset($users[$user_id))) {
$users[$user_id] = array_fill(1, 25, 0);
}
$users[$user_id][$area_id] = mysql_real_escape_string($value);
}
}
$values = array();

foreach ($users as $user_id => $areas) {
$values[] = '(' . $user_id .', now(), '. implode(', ', $areas) .')';
}

if ($values) {
$sql = 'INSERT INTO user_areas (user_id, current_date, area1, area2, area3, area4, area5, area6, area7, area8, area9, area10, area11, area12, area13, area14, area15, area16, area17, area18, area19, area20, area21, area22, area23, area24, area25) VALUES ' . implode(', ', $values);

// execute $sql query
}

关于php - 同时插入多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7518240/

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