#php #mysql #arrays #foreach #insert-update
#php #mysql #массивы #foreach #вставить-обновить
Вопрос:
У меня есть 3 простых массива с одинаковым количеством элементов
$id= array(1, 2, 3, 4, 5);
$fruit= array('apple', 'banana', 'ananas', 'orange', 'lemon');
$price= array(32, 54, 26, 97, 47);
У меня есть две таблицы MySQL. Первая таблица ‘fruits’, которая содержит строки ‘id’ и ‘name’, и вторая таблица ‘prices’, которая содержит строки ‘fruit’ и ‘price’.
В таблицу ‘fruits’ мне нужно вставить элементы из массивов $id и $ fruit. Элементы из $ id должны помещаться в строку ‘id’, а элементы из $ fruit должны помещаться в строку ‘name’, ЕСЛИ нет строки с таким же номером идентификатора. Также мне нужно вставить все элементы из массивов $ id и $ price в таблицу ‘prices’. Как и в предыдущей таблице, элементы из массива $ id должны быть помещены в строку ‘fruit’, а элементы из массива $ price должны быть помещены в строку ‘price’.
Спасибо за помощь.
Комментарии:
1. Пожалуйста, не используйте строки, подобные этой (
apple
,banana
), это очень плохая практика. Используйте'apple'
,'banana'
.
Ответ №1:
$id= array(1, 2, 3, 4, 5);
$fruit= array('apple', 'banana', 'ananas', 'orange', 'lemon');
$price= array(32, 54, 26, 97, 47);
foreach($fruit as $key => $fruitName)
{
$query = '
INSERT INTO fruits (id, name)
VALUES ('.$id[$key].', '.$fruit[$key].')
';
// execute
$query = '
INSERT INTO prices (id, price)
VALUES ('.$id[$key].', '.$price[$key].')
';
// execute
}
Но, пожалуйста, не просите меня проверять ввод [наличие ключей и т.д.] Здесь — это краткий фрагмент, который, вероятно, поможет. ;]
КСТАТИ. Было бы намного лучше, если бы у вас была одна таблица fruits (id, название, цена). ;]
Ответ №2:
Используйте array_combine()
для создания двух новых массивов:
- один, объединяющий
$id
с$fruit
- один, объединяющий
$id
с$price
Перебирайте каждый из этих двух ассоциативных массивов и вставляйте свои записи.