我有一个项目中途,我得到了这个奇怪的数组,我现在需要经历并存储在数据库中。
(weird) array $fields
是这样的:
array(10) {
["item_id"]=> string(1) "2"
["itemname"]=> array(3) {
[1]=> string(18) "Keyboard in en"
[2]=> string(21) "Keyboard in gr"
[3]=> string(20) "Keyboard in ru"
}
["shortDesc"]=> array(3) {
[1]=> string(0) "short_d en"
[2]=> string(0) "short_d gr"
[3]=> string(0) "short_d ru"
}
["description"]=> array(3) {
[1]=> string(7) "en test"
[2]=> string(7) "gr test"
[3]=> string(7) "ru test"
}
["item_code"]=> string(12) "PH31004PCS"
}
table structure
是这样的:
id(AI) | language_id | item_code | item_name | short_description | description |
我需要自动查找语言数量(在示例中为3但可能会有更多),并为每行插入适当的数据。
示例:英语和俄语的行如下所示:
| id(AI) | language_id | item_code | item_name | short_description | description |
+--------+-------------+------------+----------------+--------------------+-------------+
| 1 | 1 | PH31004PCS | Keyboard in en | short_d en | en test |
| 2 | 3 | PH31004PCS | Keyboard in ru | short_d ru | ru test |
问题:我应该如何导航数组,以便正确存储每一行以及所有语言。
尝试失败
但是,我试图浏览array
所有我设法做的就是单独获取每个inner array
,然后是names
所有short descriptions
然后全部descriptions
每个first
的{{1}} 然后 second
的{strong}代替,依此类推,依此类推。
答案 0 :(得分:2)
在这种情况下你可以使用。但首先你需要准备价值观。
$db = new mysqli('localhost', 'username', 'password', 'database');
// prepare values
$num_rows = count($array['itemname']); // get the number of rows of array
$item_id = $array['item_id']; // get the item id
$item_code = $array['item_code']; // get itemcode
unset($array['item_id'], $array['item_code']); // unset them, you don't need them when you loop later
// as usual, prepare
$insert = $db->prepare('
INSERT INTO table_name (language_id, item_code, item_name, short_description, description)
VALUES (?, ?, ?, ?, ?)
');
// start zero or 1 of $i
for($i = 1; $i <= $num_rows; $i++) {
// you need to figure out how to get the language id, might be another select here
$insert->bind_param('issss', $language_id, $item_code, $array['itemname'][$i], $array['shortDesc'][$i], $array['description'][$i]);
$insert->execute();
}
这只是基本的想法。很可能您没有发布所有内容,因为看起来您在数组array(10)
中有更多数据。
答案 1 :(得分:1)
$count = count($array['item_id']);
for($i = 0; $i < $count; $i++){
$lang_id = $array['item_id'];
$item_code = $array['item_code'];
$item_name = $array['itemname'][$i];
$short_desc = $array['shortDesc'][$i];
$desc = $array['description'][$i];
$sql = "INSERT INTO `your_table_name_here` (`language_id`, `item_code`, `item_name`, `short_description`, `description`) VALUES ('$lang_id', '$item_code', '$item_name','$short_desc','$desc')";
//dont forget to fire ur sql at the database!!
}
这样的事可能吗?