Wordpress Вставка нескольких значений флажка с использованием implode

Я пытаюсь вставить значения моего флажка в базу данных, используя этот код, он работает, но единственные данные, которые поступают в базу данных, - это значение последнего флажка, который я щелкнул.

Элементы формы:

<input type="checkbox" value="football" name="sports[]">Football
<input type="checkbox" value="running" name="sports[]">Running
<input type="checkbox" value="triathlon" name="sports[]">Triathlon

PHP:

if(isset($_POST['submit'])) {
     global $wpdb;
       $sports =$_POST['sports'];
       foreach ( $sports as $sportt) {
           $sportt;
           }
       $array = array($sportt); 
       $sport = implode(',',$array);
           }
       $wpdb->insert( 
              'user_profile', 
               array(
              'sports' => $sport));

person renielle curioso    schedule 23.09.2015    source источник
comment
Чтобы облегчить ответчикам или другим людям с похожими проблемами, редактируйте, чтобы добавить конкретное описание проблемы — это не работать можно, но как не работает? Какое сообщение об ошибке или неправильное поведение характерно?   -  person Nathan Tuggy    schedule 23.09.2015


Ответы (1)


$_POST['sports'] отправляется как массив проверенных/выбранных значений. поэтому нет необходимости пытаться превратить его в массив с помощью foreach() и взорвать(). Возможно, вам придется использовать функцию цикла для помещения каждого значения в базу данных. Или вы можете использовать implode('что вы будете склеивать', $yourArray); чтобы сделать массив строкой для вставки в базу данных. Если вы сделаете это: если вы хотите превратить строку из базы данных обратно в массив, вы можете использовать взорваться('что вы склеили', $stringToExplode);

person Paradox    schedule 23.09.2015
comment
я попробовал ваше решение.. я поставил $sports =$_POST['sports']; $sport = implode(',',$sports); $sports_out = explode(',',$sport); и получил ошибку Предупреждение: mysqli_real_escape_string() ожидает, что параметр 2 будет строкой, - person renielle curioso; 23.09.2015
comment
Прошу прощения за путаницу, ха-ха, вы должны вставить сжатую строку в базу данных. И всякий раз, когда вы получаете эту строку из базы данных и хотите превратить ее обратно в массив, используйте взорваться. - person Paradox; 23.09.2015