Как сохранить и сериализовать массив, а затем десериализовать с помощью PHP-запроса? - PullRequest
0 голосов
/ 29 марта 2019

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

  1. Клиент создает новый заказ (информация о заказе сохраняется в базе данных)

  2. Заказчик переносится на новую страницу, где он заполняет короткую форму и получает дополнительную случайную информацию для своего заказа.

  3. Клиент вводит, например, свое имя во входные данные и отправляет форму.

  4. Имя и дополнительная информация (это может быть от 1 до 5 элементов, каждый из которых имеет соответствующую сумму) сохраняется в новой таблице.

  5. Бот заходит на сайт и собирает эту информацию.

  6. Бот выполняет свои задачи и отвечает обратно на сайт, чтобы сообщить ему, что он завершен.

В настоящее время у меня все установлено, за исключением того, что у меня проблема с поиском наилучшего способа сохранить, сохранить и прочитать «дополнительную информацию», когда их несколько. Я подумал, что лучшим способом было бы собрать информацию в массив (в PHP), сериализовать ее, сохранить в таблицу, а затем, когда я позже запросю бот для чтения, отменить ее сериализацию.

Это страница, на которой бот будет читать информацию:

$conn = new mysqli($server, $user, $password, $db);

if($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);

}

$stmt = $conn->prepare('SELECT
   s.entity_id, s.increment_id, m.server_index, m.ign, mi.item_info,  m.timestamp, s.total_qty_ordered, m.bot_status
   FROM sales_flat_order as s
   INNER JOIN delivery_data as m ON s.entity_id = m.entity_id
   INNER JOIN delivery_item_data as mi ON m.entity_id = mi.entity_id
   WHERE s.store_id = "3" AND m.ready_status = "1" AND m.bot_status = 0'
 );
$stmt->execute();


$result = $stmt->get_result();

Эта проблема отображает item_info в цикле результатов.

Так, например, информация, которая сохраняется и сериализуется: array(array(0,5000),array(1,4000))

Сериализированные: a:2:{i:0;a:2:{i:0;i:0;i:1;i:999999;}i:1;a:2:{i:0;i:0;i:1;i:1999999;}}

Во-первых, это лучший способ? Во-вторых, у меня проблемы с десериализацией его в читаемый формат с остальной желаемой информацией.

Вот так будет выглядеть готовый массив:

Array 
( 
   [0] => Array 
   ( 
      [entity_id] => 8333 

      [increment_id] => 300000028 

      [server_index] => 2 

      [ign] => TestName 

      [item_info] => Array 
                      (

                             [0] => 0

                             [1] => 5000
                      )
                     Array
                      (
                             [0] => 1
                             [1] => 4000
                      )

     [timestamp] => 2019-03-26 00:00:00 

     [total_qty_ordered] => 20.0000 

     [bot_status] => 0 

    ) 

 )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...