2017-01-16 2 views
-2

Я ищу способ разместить много данных в один массив, а затем помещать их в базу данных MySQL. Мне было рекомендовано создать массив, а затем использовать JSON, чтобы поместить его в ячейку в базе данных. Однако я не уверен, как это сделать. Причина, по которой я делаю это, заключается в том, что в таблице базы данных не должно быть 30 других ненужных столбцов. На веб-сайте, на котором он работает, используется веточка.Как помещать массив в формат JSON в базу данных SQL?

Данные о том, что массив будет содержать строки, можно сказать, ответил ли пользователь «да» или «нет» на вопросы, а затем другой - почему пользователь не задал вопрос.

Если кто-то сможет дать мне пример того, как делать то, что мне нужно сделать, это было бы здорово. Спросите, есть ли у вас вопросы.

От взгляда на проблему, я обнаружил, что она способна уменьшить потребность в партиях для вопросов и вместо этого сделать так, что вопросов меньше. Это требует использования JSON.

Программа составлена ​​с использованием PHP

+0

вы можете использовать 'json_encode()' для кодирования массива в JSON (я предполагаю, что PHP, так как сво тег, который вы использовали). http://php.net/manual/en/function.json-encode.php – Kisaragi

+0

Это то, как вы делаете массив с помощью ветки, мне также нужна помощь. – UnknownPerson

+0

Ну, я полагаюсь. Что вам нужно? Вы перебираете данные? Вы хотите разобрать текст? Это слишком расплывчато. – Kisaragi

ответ

0

Надеется, что это ответ на ваш вопрос. Я работаю над чем-то похожим.

// Sample JSON where student has diploma. 
{ 
    "High_School": "American High School", 
    "HS_Diploma": true, 
    "HS_Diploma_date": "30-JUN-1997" 
} 

// Sample JSON where student does not have diploma. 
{ 
    "High_School": "American High School", 
    "HS_Diploma": false, 
    "HS_Diploma_date": null 
} 

$diploma = false; // Set default to false. 
$diploma_date = null; // Set default data to null. 

// Get Radio button 'diploma' which is set to 1 for yes. 
if ($form->get("diploma")->getData() == 1){ 
    $diploma = true; // Set boolean to true for yes. 
} 
if($diploma){ // If above boolean is true, student has HS diploma 
    $diploma_date = $form->get("diploma_date")->getData(); // So get the date. 
} 

// Creates a PHP array. 
$high_school_array = array(
    "High_School" => $form->get("high_school")->getData(), 
    "HS_Diploma" => $diploma, 
    "HS_Diploma_date" => $diploma_date->format('d-M-Y') 
); 

// Encode to JSON and set in Entity (here called $app), where setHSInfo() is the $app Entity 
// function that takes in a string (JSON encoded). 
$app->setHSInfo(json_encode($high_school_array)); 

// Store to database. 
$em->persist($app); 
$em->flush(); 

Затем в контроллере, чтобы получить из базы данных, вам необходимо декодировать JSON, а затем перейти к файл Twig, где вы можете легко использовать его:


// Where getAppHSInfo function returns the $high_school_array encoded array above from the db. 
return $this->render('viewHSDetails.html.twig', array(
     'hs_json' => json_decode($app->getAppHSInfo(), true), 
)); 

Затем в файле Twig, вы можете легко использовать его:

Education Information:<br/> 
High School attended: {{ hs_json['High_School'] }}<br/> 
{% if hs_json['HS_Diploma'] %} 
    Diploma Yes - Date: {{ hs_json['HS_Diploma_date'] }} 
{% else %} 
    Diploma No 
{% endif %}