Как вставить 3 массива в 2 таблицы MySQL?

#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

Перебирайте каждый из этих двух ассоциативных массивов и вставляйте свои записи.