Как сохранить многомерный массив в Mysql с помощью PHP - PullRequest
0 голосов
/ 09 августа 2011

Привет, у меня есть массив сервисов, упорядоченных пользователем, как показано ниже: $ _POST напечатанных значений

Array
(
[compaignID] => 4
[totalChecked] => 3
[hear_about_us] => Google
[videolink] => 
[LinkedIn] => Array
    (
        [0] => 1
        [1] => 1
        [2] => http://developer.comoj.com
    )

[Facebook] => Array
    (
        [0] => 
        [1] => 
    )

[Twitter] => Array
    (
        [0] => 
        [1] => 
    )

[YouTube] => Array
    (
        [0] => 2
        [1] => 4
        [2] => http://developer.comoj.com
    )

[Coupon_Area] => Array
    (
        [0] => 
        [1] => 
    )

[Website] => Array
    (
        [0] => 
        [1] => 
    )

[Google_Map] => Array
    (
        [0] => 
        [1] => 
    )

[Email] => Array
    (
        [0] => 3
        [1] => 8
        [2] => http://developer.comoj.com
    )

[Share_To_Social_Media] => Array
    (
        [0] => 
        [1] => 
    )

[btnSubmit] => Submit
)

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

для поля ввода заказов

<input name="<?php echo $service; ?>[]" type="text" id="order<?php echo $service; ?>" size="4">

для служб Установите флажки, чтобы проверить, какие службы принимать

<input name="<?php echo $service; ?>[]" type="checkbox" id="show<?php echo $service; ?>" value="<?php echo $serviceID; ?>" onclick="countChecked();">

А для Services WebURL поле ввода ниже, например

<input name="<?php echo $service; ?>[]" type="text" id="<?php echo $service; ?>" size="40">

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

Я запутался, как перебрать и сохранить в mysql.

Пожалуйста, помогите мне.

Большое спасибо

Ответы [ 4 ]

7 голосов
/ 09 августа 2011

Вы можете воспользоваться помощью json_encode() и json_decode() функций PHP для решения этих проблем.

Для сохранения и массива в mysql, вы должны использовать json_encode($yourArray);, и вы должны сохранить возвращенную строку в mysql.

Аналогично для извлечения вы должны использовать json_decode($yourMySqlStoredString), и это вернет вам массив, который вы можете использовать для дальнейших манипуляций!

json_encode php function

функция php json_decode

3 голосов
/ 27 ноября 2013

Я считаю, использование serialize () и unserialize () лучше, чем использование json_encode() и json_decode().

Причина проста: Serialize кодирует многомерный (строковый) индексированный массив в строку, а unserialize может возвращать тот же массив (в исходном формате массива) в отличие от комбинации функции json_encode и json_decode, которая возвращает объект со свойствами массива.

Ну, и это просто не очень "дружественно к программисту".

Исходный массив:

Array(
[prvni] => Array
    (
        [druhy] => Array
            (
                [0] => a
                [1] => b
                [2] => c
                [3] => d
                [4] => e
                [5] => f
            )
    )

[prvnidruhy] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
        [3] => 4
        [4] => 5
    )
)

json_encode:

{"prvni":{"druhy":["a","b","c","d","e","f"]},"prvnidruhy":[1,2,3,4,5]}

json_decode:

object(stdClass)[1]
 public 'prvni' => 
  object(stdClass)[2]
   public 'druhy' => 
    array (size=6)
      0 => string 'a' (length=1)
      1 => string 'b' (length=1)
      2 => string 'c' (length=1)
      3 => string 'd' (length=1)
      4 => string 'e' (length=1)
      5 => string 'f' (length=1)
   public 'prvnidruhy' => 
    array (size=5)
      0 => int 1
      1 => int 2
      2 => int 3
      3 => int 4
      4 => int 5

сериализации:

a:2:{s:5:"prvni";a:1:{s:5:"druhy";a:6:{i:0;s:1:"a";i:1;s:1:"b";i:2;s:1:"c";i:3;s:1:"d";i:4;s:1:"e";i:5;s:1:"f";}}s:10:"prvnidruhy";a:5:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;}}

десериализация:

array (size=2)
 'prvni' => 
    array (size=1)
 'druhy' => 
    array (size=6)
      0 => string 'a' (length=1)
      1 => string 'b' (length=1)
      2 => string 'c' (length=1)
      3 => string 'd' (length=1)
      4 => string 'e' (length=1)
      5 => string 'f' (length=1)
 'prvnidruhy' => 
    array (size=5)
      0 => int 1
      1 => int 2
      2 => int 3
      3 => int 4
      4 => int 5
1 голос
/ 16 марта 2014

Но вы можете использовать json_decode($data, true) для получения простого ассоциативного массива. Из документации :

Когда TRUE, возвращаемые объекты будут преобразованы в ассоциативные массивы.

0 голосов
/ 09 августа 2011

Этот ответ основан на вашем последнем комментарии.Вам нужно перебрать массив и вставить каждое значение.Предварительно ...

foreach ($array AS $v) {
$sql = "INSERT INTO `tbl_page_link` (serviceID, sorder, webaddress) VALUES ($v[0], $v[1], '$v[2]')";
mysql_query($sql);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...