Здравствуйте, подскажите пожалуйста, у меня есть таблица в БД, в которую попадают начальный данные, а некоторые столбцы остаются пустые. Потом из неё я эти начальные данные достаю, делаю некоторые расчеты, рассчитанные значения мне нужно записать обратно, в эту же запись в БД, откуда взял начальный данные, в пустые столбцы, то есть сделать update. Проблема состоит в том, что эти рассчитанные данные разбиты у меня на 5 многомерных массивов, как сделать обновление таким образом, что бы каждый элемент массива попал в отдельный столбец? В принципе я думал эти 5 массивов объединить, в один. Но как вот сделать update пока что не совсем понимаю, просто если писать "столбец => значение" получиться долго, так как элементов много. Подскажите пожалуйста что тут можно сделать, заранее благодарю.
Как сделать что бы в БД, в каждуый столбец, попал один элемент из массива?
Главные вкладки
Лучший ответ
1
Бррр....
<?php
$fields = array();
for($i = 0; $i < 7; $i++) {
$fields["row1_col" . ($i + 1)] = $table1[$i];
}
db_update('webformData')->fields($fields)->condition('id',$ID_db)->execute();
?>
И все равно жуть какая-то.
Не забывайте что Ваше "решение" могут принять за правильные действия, и у себя где-то повторить.
Комментарии
Дополните свой пост кодом, тогда можно будет говорить предметно.
Здравствуйте, уже нашел решение, записываю в массив колонки из БД $colum, а потом формирую массив $fields, где ключ, это имя колонки, а значение, это значение которое нужно вставить в БД. А затем выполняю db_update в цикле. Вот сам код:
<?php
$colum = array("row1_col1","row1_col2","row1_col3","row1_col4","row1_col5","row1_col6","row1_col7");
for($i = 0; $i < 7; $i++) {
$fields = array(
$colum[$i] => $table1[$i],
);
db_update('webformData')->fields($fields)->condition('id',$ID_db)->execute();
}
?>
Бррр....
<?php
$fields = array();
for($i = 0; $i < 7; $i++) {
$fields["row1_col" . ($i + 1)] = $table1[$i];
}
db_update('webformData')->fields($fields)->condition('id',$ID_db)->execute();
?>
И все равно жуть какая-то.
Не забывайте что Ваше "решение" могут принять за правильные действия, и у себя где-то повторить.
Ну я не говорю, что это самое верное решение, возможно есть и другие более лучшие варианты.
Ну кстати да, можно и так тоже, но в моём случае тут ещё и row каждый раз увеличивается. То есть вот структура такая:
"row1_col1","row1_col2","row1_col3","row1_col4","row1_col5","row1_col6" а потом
"row2_col1","row2_col2","row2_col3","row2_col4","row2_col5","row2_col6".
Спасибо за ответ.
По приведенному коду ничего не увеличивается.
Но, зато, на каждую итерацию запрос шлет.
Не совсем понял, то есть это же у меня кстати каждая итерация, запрос отправляла, то что в цикле был db_update. А у Вас же получается, формируется массив, а потом одним запросом всё вставляется. Собственно сейчас исправляю у себя)
Спасибо большое. Теперь не нужно мне создавать большой массив с колонками, а я ещё в своём варианте когда делал, из многомерного массива делал одномерный, но тут вот теперь с Вашей помощью, могу и не переводить, а работать с многомерным.
<?php
$fields = array();
for($i = 0; $i < 7; $i++) {
for($j = 0; $j < 6; $j++) {
$fields["row".($i+1)."_col".($j+1)] = $table1[$i][$j];
}
}
?>
Только как мне теперь с остальными, там просто ещё 4 таки же массива. Есть мысли что, по такому же принципу, а потом объединить их в один $fields.
На здоровье. Учитесь оптимизировать.