Два массива в одну таблицу mysql

Тема в разделе "Инъекции в MySQL", создана пользователем Xpite, 11 июл 2018.

Метки:
  1. Xpite

    Xpite Member Пользователи

    Регистрация:
    13 мар 2017
    Сообщения:
    103
    Помогите пожалуйста, никак не могу понять.
    Есть два массива, полученные из CD - первый с никами, второй с комментариями
    Пишу в таблицу comment
    Сначала разбиваю каждый массив по sep, заданному в CD
    $commentautor = explode(",", $commentautors);
    $comment = explode("{;}", $comments);
    Дальше мне нужно использовать
    foreach ($commentautor as $value){
    mysql_query("INSERT INTO comment (post_id, user_id, date, autor, text, ip, is_register, approve) VALUES ('$_POST[id]', '1', NOW(), '$value', '$value2', '127.0.0.1', '0', '1')");

    }
    Отсюда собственно и растет вопрос. foreach для двух массивов не задает value, а только для одного, использование двух foreach не работает.
    В php не силен, в гугле нет примера когда массив занимает только часть записи в БД, а не когда столбец-значение для всех таблицы. А у меня получается массивы задают только поля autor и text, остальные используют другие значения.
    Подскажите пожалуйста знатоки, как писать базу значения двух и более массивов? Заранее очень благодарен!
     
  2. Xpite

    Xpite Member Пользователи

    Регистрация:
    13 мар 2017
    Сообщения:
    103
    Пока решил это через for с привязкой по i комментов
    for($i = 0; $i < count($comment); $i++) {
    $value1 = $comment[$i];
    $value2 = $commentautor[$i];
    mysql_query("INSERT INTO comment (post_id, user_id, date, autor, text, ip, is_register, approve) VALUES ('$_POST[id]', '1', NOW(), '$value2', '$value1', '127.0.0.1', '0', '1')");

    }

    Если спецы знаю вариант получше (или смогут прокомментировать адекватность того варианта что я состряпал на основе гугла) - буду очень рад помощи!
     
  3. Xpite

    Xpite Member Пользователи

    Регистрация:
    13 мар 2017
    Сообщения:
    103
    При моем примере только куда-то девается 2 коммента)
    UPD. А нет, это мой касяк в CD
     
    Последнее редактирование: 11 июл 2018
  4. altenu

    altenu New Member Пользователи

    Регистрация:
    17 ноя 2018
    Сообщения:
    1
    Тоже много времени убил на гугл, помогу другим, решил так:
    Если 2 массива можно так:

    PHP:
            foreach(array_combine($a$b) as $a=>$b) {
                        
    mysqli_query($db"INSERT INTO table (column1, column2) VALUES ('$a', '$b')");
    }
    Если 2 и более массивов можно так:
    PHP:
    $mi = new MultipleIterator();
    $mi->attachIterator(new ArrayIterator($a));
    $mi->attachIterator(new ArrayIterator($b));
    $mi->attachIterator(new ArrayIterator($c));
    foreach ( 
    $mi as $value ) {
        list(
    $a$b$c) = $value;
         
    mysqli_query($db"INSERT INTO table (column1, column2, column3) VALUES ('$a', $b', '$c')");
    }
     
    Root нравится это.

Поделиться этой страницей