我成功地序列化了数据(数组)并将其插入到数据库的列中。现在我想选择该列并将其转换回and数组,并在单独的行中列出数组中的每个元素。
我正在努力解决的问题:
与我未序列化的数组斗争。我之所以要序列化,首先是因为我使用的是一个多维数组,它可以在一个顺序中包含一个或多个项。
将序列化数据插入mysql数据库后,信息如下所示:
示例1-[订单中数量为1的一个项目]。
a:1:{i:7354028228659;a:1:{s:8:"quantity";i:1;}}
我想取消序列化它并用下面的结构将其填充到一个php表中。
| Varaint_id | Quantity |
|---------------|----------|
| 7354028228659 | 1 |
|---------------|----------|
如果订单中有多个项目,我希望实现相同的布局。
例2-【订单中的3个项目,每个项目的数量为1】。
a:3:{i:6836781613107;a:1:{s:8:"quantity";i:2;}i:6737290241;a:1:{s:8:"quantity";i:1;}i:49366524679;a:1:{s:8:"quantity";i:1;}}
以下是上述三个项目的说明,每个项目有一个单元。
----------------------------
| Varaint_id | Quantity |
----------------|-----------
| 6836781613107 | 1 |
|---------------|----------|
| 6737290241 | 1 |
|---------------|----------|
| 49366524679 | 1 |
|---------------|----------|
我目前正在努力将字符串转换回数组,然后使用php将其显示在表中。
当前方法:
步骤1-对数据库运行select查询:
步骤2-从数据库获取$stmt&unserialize列“items”。注意:我在这里挣扎!
步骤3-将结果回显到表中。
//1. Running a SELECT query to the Database.
$stmt = $db->query("SELECT items, order_number, cust_fname
From orders
WHERE '".$order_number."' = order_number");
//2. Fetch $stmt & Unserialize column 'items' from database.
while($row = $stmt->fetch()){
$results = unserialize($row['items']);
//3. Echo results into a table.
echo "<tr>
<td>" . $results . "</td>
<td>" . $results . "</td>
</tr>";
};
我不知道如何在数组中循环并取消序列化数据,然后只在一列中回显变量id,在另一列中回显数量。任何帮助都将不胜感激。
1条答案
按热度按时间e4yzc0pl1#
如@riggsfully所定,你可以像其他阵法一样消耗你的阵法。
我知道这不是真正的主题,但让我指出您的代码中危险的sql注入问题。
您的代码:
对攻击很敏感,看起来像:
通知
--
是mysql中注解行的其余部分的一种方法,此查询将输出订单中的所有行。由
PDO::prepare
以及PDO::execute
你要避免这种攻击。更多信息