我有以下数组:
Array
(
[step1] => 3
[step2] => Array
(
[1] => Array
(
[type] => 2
[price] => 312.5
)
[0] => Array
(
[type] => 1
[price] => 51.5
)
)
[step3] => Array
(
[first_name] => Test
[last_name] => Test
)
[step4] => Some answer
)我想把它插入数据库。Step2可以拥有用户想要的多少项。正如您可能已经注意到的,step2的两个数组之间存在差异。此外,step3还可以有更多的字段。这都是用户依赖的。
之所以是动态的,是因为用户可以管理仪表板中的表单输入字段。
我试着为每一步插入做一个foreach循环,但是这并不是很好。我想做的是:有一个动态的查询,这样每个字段都可以插入到数据库中。我认为最简单的方法是在step2上执行一个foreach循环,这样每个项都有其他的值。我的问题是如何使用mysqli (OOP)将这个多维数组中的所有数据插入数据库中。
还检查了其他一些类似的问题,比如:Inserting data into MySQL from a multidimensional array in php,insert multiple rows via a php array into mysql,insert php array into mysql,但这些都帮不了我。所以implode()不会帮我的。而且,由于每个字段在数据库中都有自己的字段,所以序列化将无法工作。(当用户编辑数据库中仪表板字段中的表单时,也会发生更改)
提前感谢
发布于 2014-09-10 11:19:13
最后,我创建了第二个表来存放所有的订单细节。我编辑的另一个表是为了保存所有的用户数据。orders表还有一个要链接的userId。
然后,我创建了一个函数来插入所有用户数据:
function insertUserData($array, $table) {
$tbl_fields = $this->tableFields($table);
$query = "INSERT INTO `user_orders` ("; // Query
foreach($array as $field => $value) {
if(array_key_exists($field, $tbl_fields)) {
$query .= "`$field`, ";
}
}
$query .= ") VALUES ("; // Add to query
foreach($array as $field => $value) {
if(array_key_exists($field, $tbl_fields)) {
$query .= "'$value', ";
}
}
$query .=")"; // End
//echo $query; //Query output
if($db->mysqli->query($query)) {
$insert_id = $db->mysqli->insert_id;
} else {
echo 'Something went wrong';
}
return $insert_id;
}对于第二步,我可以做以下工作:
foreach($data['stap2'] as $key => $array) {
$query = "INSERT INTO `orders` (";
foreach($array as $field => $value) {
if(array_key_exists($field, $table)) {
$query .= "`$field`, ";
}
}
$query .= "`order_id`) VALUES (";
foreach($array as $field => $value) {
if(array_key_exists($field, $table)) {
$query .= "'$value', ";
}
}
$query .= "'$insert_id')";
echo $query.'<br>';
}我检查每个字段到表中的字段。如果a等于,则将它们添加到查询中。这样我就可以创建一个动态查询。这为我解决了这个问题。
https://stackoverflow.com/questions/25726512
复制相似问题