Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将多维数组插入MySQL表文本字段_Php_Mysql_Sql_Arrays_Multidimensional Array - Fatal编程技术网

Php 将多维数组插入MySQL表文本字段

Php 将多维数组插入MySQL表文本字段,php,mysql,sql,arrays,multidimensional-array,Php,Mysql,Sql,Arrays,Multidimensional Array,我想在MySQL数据库字段中插入一个多维数组,这样以后就可以很容易地从数据库读回数组。实现这一目标的最佳方式是什么 我尝试了以下方法,但没有效果: $id = "MXB-487" $items = Array(Array("Coffee", "Blend", "500"), Array("Coffee1", "Blend1", "250")); $items = implode(",", $items); mysqli_query($con,"INSERT INTO carts (id,

我想在MySQL数据库字段中插入一个多维数组,这样以后就可以很容易地从数据库读回数组。实现这一目标的最佳方式是什么

我尝试了以下方法,但没有效果:

$id    = "MXB-487"
$items = Array(Array("Coffee", "Blend", "500"), Array("Coffee1", "Blend1", "250"));
$items = implode(",", $items);
mysqli_query($con,"INSERT INTO carts (id, items) 
VALUES ($id, $items)");

/*Code that pulls the array from the Database based on id and stores in variable $info*/
restored_mdarray = explode(",", $info);

使用
序列化

$a = array(array(1,2,3), array(3,4,5));
$b = serialize($a);
# write $b to and later read $b from database
$c = unserialize($b);
$a == $c   # => true

使用
序列化

$a = array(array(1,2,3), array(3,4,5));
$b = serialize($a);
# write $b to and later read $b from database
$c = unserialize($b);
$a == $c   # => true

MySql中的ID通常是唯一的(我很确定您是这样指定的)。因此,您不能共享多个项目的ID。此外,内爆将以以下查询结束:

INSERT INTO carts (id, items) VALUES(MXB-487, Array, Array)
因为你有一个多维数组要内爆,所以它不会递归内爆

您应该做的是遍历对象,我不确定这里的关系是如何工作的,但看起来您需要一个关系表来连接这些项。考虑以下结构:

    Carts:
    +----------+-----------+
    |    ID    |   Name    |
    +----------+-----------+
--<-|  MXB-487 | Blah blah |
|   +----------+-----------+
|
|   Items:
|   +----------+-----------+----------+-----------+
|   | Cart_ID  | Type1     | Type 2   | Amount    |
|   +----------+-----------+----------+-----------+
--->| MXB-487  | Coffee    | Blend    | 500       |
    +----------+-----------+----------+-----------+
您可以在以后选择:

<?php
$id = "MXB-487";

$sql = "SELECT * FROM actions WHERE (cart_id = '$id')";

MySql中的ID通常是唯一的(我很确定您是这样指定的)。因此,您不能共享多个项目的ID。此外,内爆将以以下查询结束:

INSERT INTO carts (id, items) VALUES(MXB-487, Array, Array)
因为你有一个多维数组要内爆,所以它不会递归内爆

您应该做的是遍历对象,我不确定这里的关系是如何工作的,但看起来您需要一个关系表来连接这些项。考虑以下结构:

    Carts:
    +----------+-----------+
    |    ID    |   Name    |
    +----------+-----------+
--<-|  MXB-487 | Blah blah |
|   +----------+-----------+
|
|   Items:
|   +----------+-----------+----------+-----------+
|   | Cart_ID  | Type1     | Type 2   | Amount    |
|   +----------+-----------+----------+-----------+
--->| MXB-487  | Coffee    | Blend    | 500       |
    +----------+-----------+----------+-----------+
您可以在以后选择:

<?php
$id = "MXB-487";

$sql = "SELECT * FROM actions WHERE (cart_id = '$id')";

嘎,我也知道那个;我已经几个月没有使用PHP了,并将它的功能同化为“内爆”,真是个白痴!哈哈。非常感谢。不过我不建议您使用它,因为您似乎在尝试将数组附加到表中——这就是一对多关系的用途,也是关系数据库(a-LaMySQL)的用途。检查我的答案,寻找一个更智能的解决方案,它还允许您在以后的情况下索引这些行。然而,在有些情况下,不将每一点分解为关系是合理的。一些数据库在数据类型级别上意识到了这一点,最显著的是PostgreSQL,它具有数组、散列和专用结构(例如IP地址、坐标等);我已经几个月没有使用PHP了,并将它的功能同化为“内爆”,真是个白痴!哈哈。非常感谢。不过我不建议您使用它,因为您似乎在尝试将数组附加到表中——这就是一对多关系的用途,也是关系数据库(a-LaMySQL)的用途。检查我的答案,寻找一个更智能的解决方案,它还允许您在以后的情况下索引这些行。然而,在有些情况下,不将每一点分解为关系是合理的。一些数据库在数据类型级别上意识到了这一点,最显著的是PostgreSQL,它具有数组、散列和专用结构(例如IP地址、坐标等)。