我从数组中的输入框中获取值。我想将所有这些发布到一个带有单个插入查询的数据库中,以便所有相关数据一起插入MySQL
这是我的代码
foreach ($_POST['stop'] as $stopIndex => $stopValue) {
echo $stopname=$stopValue;
}
foreach ($_POST['timing'] as $timingIndex => $timingValue) {
}
foreach ($_POST['ampm'] as $ampmIndex => $ampmValue) {
}
任何人都可以帮我正确编写插入查询的代码
答案 0 :(得分:0)
如果您使用codeigniter获取数据的方式,这是一个示例。
只需使用适当的密钥(与您定义的数据库密钥相关)准备一个数组,然后使用update_batch CI db方法导入它。
这实际上就是您可以在模型中使用的方法。
function save_something() {
$post_data = $this->input->post();
foreach ($post_data as $key => $value) {
$settings[] = array( 'key' => $key, 'value' => $value);
}
}
$this->db->update_batch('settings',$settings,'key');
return true;
}
答案 1 :(得分:0)
是的确定。
假设您有类似下面的内容。
<input type="text" name="variable1['key1']">
<input type="text" name="variable1['key2']">
此处variable1
是一个数组。当您提交时,而不是使用“for”或“foreach”将其直接序列化为:
$s = serialize($_POST['variable1']);
echo $s;
您的$s
将是这样的:
"a:2:{s:6:"'key1'";s:6:"value1";s:5:"'bcd'";s:6:"value2";}"
$s
可以存储在数据库的单个列中(类型可以是DB中的文本)。
在检索时,您可以反序列化转换回数组的列,并且可以轻松使用它。
优点,数据库中的记录数量较少,而在前端则无需使用 循环语句。
更新 - 添加数据库:
foreach ($_POST as $key)
{
$s = serialize($key);
mysqli_query("INSERT INTO `test`.`abc` (`id` ,`data`) VALUES (NULL , $s)");
}
序列化值充当字符串,因此结果将是记录数==数组数。