За последние 24 часа нас посетили 63246 программистов и 1740 роботов. Сейчас ищут 885 программистов ...

Как вставить в БД все значения массива

Тема в разделе "PHP для новичков", создана пользователем Cyrius, 3 янв 2017.

  1. Cyrius

    Cyrius Активный пользователь

    С нами с:
    3 июл 2016
    Сообщения:
    98
    Симпатии:
    4
    Есть массив $consist со значениями из формы, вообще, он выглядит у меня так (довольно мудрено я считаю, может подскажите способ попроще)
    PHP:
    1. $consist = array("<li>".$_GET['consist1']."</li>","<li>".$_GET['consist2']."</li>" );
    2.                if(!empty($_GET['consist3'])){array_push($consist,"<li>".$_GET['consist3']."</li>");} else { unset      ($_GET['consist3']);}
    3.                 if(!empty($_GET['consist4'])){array_push($consist,"<li>".$_GET['consist4']."</li>");} else { unset($_GET['consist4']);}
    4.                 if(!empty($_GET['consist5'])){array_push($consist,"<li>".$_GET['consist5']."</li>");} else { unset($_GET['consist5']);}
    5.                 if(!empty($_GET['consist6'])){array_push($consist,"<li>".$_GET['consist6']."</li>");} else { unset($_GET['consist6']);}
    не суть.

    Я хочу, чтобы все значения этого массива занеслись в таблицу в БД. Мой код
    PHP:
    1. $sql = "INSERT INTO `articles` (`consist_of`) VALUES ('$consist')";
    2.  
    3. mysql_query($sql,$db)or die("Ошибка при добавлении новой статьи - ".mysql_error());}
    добавляет в таблицу значение ARRAY и всё.. Помогите, как мне это сделать?
     
  2. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    PHP:
    1. $arr = array("1", "2", "3");
    2. foreach ($arr as $value) {
    3.     mysqli_query($db. "INSERT INTO `table` (`consist_of`) VALUES('$value')");
    4. }
    --- Добавлено ---
    Я, как вы видите, использую конструкцию mysqli_query, а не mysql_query. Она более совершенная, и в последних версиях php mysql_... не работает. Так что используйте mysqli_... Для этого, естественно нужно и подключение соответствующее сделать.
     
  3. Cyrius

    Cyrius Активный пользователь

    С нами с:
    3 июл 2016
    Сообщения:
    98
    Симпатии:
    4
    Вы помогли, спасибо, но результат вышел не такой как я хотел. Он заносит каждое значение массива в новую строку! А мне нужно, чтобы все значения оказались в одной строке графы.
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Тогда сначала сериализуйте массив в тот же JSON через json_encode. Полученную строку пишите в базу. Одним запросом отделаетесь. Потом, когда надо, читаете из базы эту строку, прогоняете через json_decode, получаете обратно массив. Вуаля!
    --- Добавлено ---
    Только сначала почитайте документацию по этим функциям, чтобы правильно выставить флаги. Ну там, чтобы кириллица не конвертилась(это не смертельно, но всегда приятно, когда данные в базе удобочитаемы), чтобы при обратной сборке получался массив, а не объект и все такое. Это довольно просто, вы справитесь. Просто надо прочитать.
     
  5. Cyrius

    Cyrius Активный пользователь

    С нами с:
    3 июл 2016
    Сообщения:
    98
    Симпатии:
    4
    Вот так?
    Json_encode($values);
    решит все мои проблемы? так просто? Судя по статье именно так...
     
  6. Cyrius

    Cyrius Активный пользователь

    С нами с:
    3 июл 2016
    Сообщения:
    98
    Симпатии:
    4
    Ваше решение не помогло, я решил проблему при помощи функции implode()
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    И чем же оно не помогло? Implode генерит строку из массива, но использовать его вместо сериализатора не совсем правильно.

    PHP:
    1. <?php
    2. $array = array("1" => "PHP code tester Sandbox Online",
    3.               "foo" => "bar", 5 , 5 => 89009,
    4.               "case" => "Random Stuff: " . rand(100,999),
    5.               "PHP Version" => phpversion()
    6.               );
    7.  
    8. $string = json_encode($array);
    9.  
    10. echo($string);
    11. //{"1":"PHP code tester Sandbox Online","foo":"bar","2":5,"5":89009,"case":"Random Stuff: 625","PHP Version":"7.1.0"}
    Все работает как надо. Получается строковое представление, которое может быть легко декодировано обратно в массив.