如何保存和序列化数组,然后通过PHP查询反序列化?

时间:2019-03-29 02:46:49

标签: php mysql serialization

我正在创建一个新的应用程序,它将与各种外部bot集成在一起,并且该bot将访问我的网站以获取有关新订单的特定信息。该应用程序将按以下方式工作:

  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 

    ) 

 )

0 个答案:

没有答案