Php 在sql数据库中存储数组

Php 在sql数据库中存储数组,php,mysql,arrays,Php,Mysql,Arrays,我开始进入阵列,但并没有很好地工作。我习惯于使用分解/内爆函数,但我认为在这部分代码中,数组会使我的工作更轻松。以下是名为: function save_event($event_items = NULL) { include 'connect.php'; $now = date("Y-m-d H:i:s"); $sqla = " INSERT INTO `event`(`event_items`, `event_entered`) VALUES ('$event_items','$n

我开始进入阵列,但并没有很好地工作。我习惯于使用分解/内爆函数,但我认为在这部分代码中,数组会使我的工作更轻松。以下是名为:

function save_event($event_items = NULL) {
include 'connect.php';

$now = date("Y-m-d H:i:s");
$sqla = "
INSERT INTO `event`(`event_items`, `event_entered`)
    VALUES ('$event_items','$now')";

    $resulta = mysqli_query($link, $sqla);
    if(!$resulta)
        {
        echo '<br/>An error occurred while inserting your data. Please try again later.<br/>';
        }
    else
        { echo 'this is the variable to be stored:<br/>';
          print_r($event_items);

          $sql = "SELECT * FROM `event` WHERE event_entered = '".$now."'";
          $result = mysqli_query($link, $sql);

          if($result)
            { while($row = mysqli_fetch_assoc($result))
                  { echo '<br/></br>This is the value of the database:<br/>';
                    print_r ($row['event_items']);
                  }
            }
          }
}
在phpMyAdmin中,
event\u items
列中我只看到单词
Array

其他信息:
我有一个名为Groups的表,每个组都有一个或多个订单(另一个称为Order的表),每个订单也有一个或多个事件(另一个表)。最后,每个事件都有一个或多个项目(每个项目都有其相应的价格、数量、备注和类别),这些项目存储在事件表的一(或多)列中。

不要尝试在一个字段中存储数组。您应该将每个项目存储在数组中,就像它在相关表中自己的行一样。

不要试图将数组存储在一个字段中。您应该将数组中的每个项存储为相关表中它自己的行。

您可以使用serialize()函数序列化数组

例如:

serialize($event_items);
生成值的可存储表示形式

这对于在不丢失数据的情况下存储或传递PHP值非常有用 它们的类型和结构


可以使用serialize()函数序列化数组

例如:

serialize($event_items);
生成值的可存储表示形式

这对于在不丢失数据的情况下存储或传递PHP值非常有用 它们的类型和结构


您试图在一个数据库记录中插入多个值,这并非不可能,但通常也不建议这样做

有人这样做的主要原因是为了优化,这一点你现在不必担心


您真正想要做的是查看数据库模式,如果您希望存储一个值数组,则需要为每个值创建一个新行(记录)。这可能需要创建另一个表,具体取决于您想要执行的操作。

如果您试图在一个数据库记录中插入多个值,这并非不可能,但通常也不建议这样做

有人这样做的主要原因是为了优化,这一点你现在不必担心



您真正想要做的是查看数据库模式,如果您希望存储一个值数组,则需要为每个值创建一个新行(记录)。这可能需要创建另一个表,具体取决于您要执行的操作。

您不能只插入一个数组,然后期望它按照此处的方式存储。您可以返回使用分解和内爆或规范化架构,并每行存储一个值。
array
意味着要存储的变量不是字符串,而是数组。因此,问题出在您的
INSERT
查询中。考虑使用<代码>序列化()/<代码>和<代码> unSerialZeIE()>代码>。不能只插入一个数组并期望它按照这里所做的方式存储。您可以返回使用分解和内爆或规范化架构,并每行存储一个值。
array
意味着要存储的变量不是字符串,而是数组。因此,问题出在您的
INSERT
查询中。考虑使用<代码>序列化()< <代码> > <代码> unSerialZeIE()>代码>。我只是觉得数组更容易使用。现在,serialize/unserialize看起来很好学:-)序列化当然是一种可行的方法,但是最好为记录创建一个新表。即使是在每月有超过500000个独立访问者的网站上工作,我们也很少需要这样做来优化。serialize是用于使用数组的-这不是正确的方法。我实际上就是从这种方法来的!我只是觉得数组更容易使用。现在,serialize/unserialize看起来很好学:-)序列化当然是一种可行的方法,但是最好为记录创建一个新表。即使是在每月有超过500000个独立访问者的网站上工作,我们也很少需要这样做来进行优化。serialize用于使用数组-这不是正确的方法。在尝试创建数组之前,我使用的是内爆/爆炸,并有名为item、note、price、,等等。这样做吗?您应该有一个表来保存父项。(订单?)和一个包含每个产品的表格(列为item、note、price等)。它还应该有order_id。如果你需要更多,谷歌“数据规范化”。哇,我认为有些事情我不值得说,但我现在看到了需要:我有一个名为Groups的表,每个组将有一个或多个订单(另一个称为order的表),每个订单还将有一个或多个事件(另一个表)。最后,每个事件都有一个或多个项目(每个项目都有相应的价格、数量、备注和类别),存储在事件表的一(或多)列中。听起来不错。类别应该是它自己的表,并且存储categoryId。永远不要存储数组。或者对它们进行内爆、序列化等操作的结果。在尝试生成数组之前,我使用了内爆/分解,并将列命名为item、note、price等。这样做吗?您应该有一个包含父项的表。(订单?)和一个包含每个产品的表格(列为item、note、price等)。它还应该有order_id。如果你需要更多,谷歌“数据规范化”。哇,我认为有些事情我不值得说,但我现在看到了需要:我有一个名为Groups的表,每个组将有一个或多个订单(另一个称为order的表),每个订单还将有一个或多个事件(另一个表)。最后,每个活动将有一个或多个项目(每个项目及其相应的价格、数量、注释和类别),