Intereting Posts
Можно ли обрабатывать SELECT, SELECT COUNT и перекрестные таблицы ссылок только одним запросом? Запустите расширение chrome и отправьте данные в PHP-скрипт на загрузку страницы (автоматизируйте процесс) html frameset с результатами Google «SAMEORIGIN» Yii – как получить данные модели на страницу макета? Как я могу получить доступ к моему локальному серверу с других компьютеров? Как усечь HTML на определенное количество символов? Метод Ajax отображает неправильный ввод .htaccess Параметр PHP 5.3 нарушает параметр Access-Control-Allow-Origin? Как преобразовать кодовые страницы Unicode в шестнадцатеричные HTML-объекты? «Срок действия страницы истек из-за бездействия» – Laravel 5.5 Запись новой строки в файл на PHP MySQL Slow on join. Любой способ ускорить Как я могу создать динамический Javascript? Как получить полный URL текущей страницы на сервере Windows / IIS? Ошибка PHP при использовании простого сценария загрузки файлов: не удалось открыть поток: нет такого файла или каталога

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

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

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

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

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

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

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

 $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 

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

Чтобы преобразовать любой массив (или любой объект) в строку с помощью 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 ); 
 <?php $myArray = new array('1', '2'); $seralizedArray = serialize($myArray); ?>