Сохранить массив в базе данных mysql

Я хочу сохранить дополнительную информацию перед отправкой полного заказа в Paypal. Для каждого элемента я создал один столбец в моей базе данных MySQL, где я хочу его сохранить. Теперь я решил сохранить его как массив, который я могу прочитать позже для создания страницы PHP. Дополнительные поля берутся из полей формы ввода.

Используя массив, могу ли я быть уверенным, что вы не будете смешивать информацию?

Ответ 1

Вы можете сохранить массив, используя serialize/unserialize. С этим решением они не могут быть легко использованы с других языков программирования, поэтому вы можете использовать json_encode/json_decode (что дает вам широко поддерживаемый формат). Избегайте использования implode/explode для этого, так как вы, вероятно, столкнетесь с ошибками или недостатками безопасности.

Обратите внимание, что это делает вашу таблицу ненормированной, что может быть плохой идеей, поскольку вы не можете легко запросить данные. Поэтому внимательно рассмотрите это, прежде чем идти вперед. Может вам нужно запросить данные для статистики или иным образом? Существуют ли другие причины для нормализации данных?

Кроме того, не сохраняйте массив raw $_POST. Кто-то может легко создать свою собственную веб-форму и опубликовать данные на вашем сайте, тем самым отправив действительно большую форму, которая занимает много места. Сохраните те поля, которые вы хотите, и убедитесь, что они проверяют данные перед сохранением (поэтому вы не получите недопустимые значения).

Ответ 2

То, как это делается, - это сериализовать массив, что означает "создание строки из него". Чтобы лучше понять это, посмотрите на это:

$array = array("my", "litte", "array", 2);

$serialized_array = serialize($array); 
$unserialized_array = unserialize($serialized_array); 

var_dump($serialized_array); // gives back a string, perfectly for db saving!
var_dump($unserialized_array); // gives back the array again

Ответ 3

Чтобы преобразовать любой массив (или любой объект) в строку, используя PHP, вызовите serialize():

$array = array( 1, 2, 3 );
$string = serialize( $array );
echo $string;

$ string теперь будет содержать строковую версию массива. Вывод приведенного выше кода выглядит следующим образом:

a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}

Чтобы преобразовать обратно из строки в массив, используйте unserialize():

// $array will contain ( 1, 2, 3 )
$array = unserialize( $string );

Ответ 4

Используйте функцию PHP serialize() для преобразования массивов в строки. Эти строки могут быть легко сохранены в базе данных MySQL. Используя unserialize(), они могут быть снова преобразованы в массивы, если это необходимо.

Ответ 5

<?php
$myArray = new array('1', '2');
$seralizedArray = serialize($myArray);
?>

Ответ 6

Сохраните его в многозначном столбце с разделителем-запятой в таблице RDBM.