将数组存储在sql数据库中

时间:2013-06-20 20:57:13

标签: php mysql arrays

我开始进入数组并且不能让它运行良好。我习惯使用explode / implode函数,但是我在这部分代码中使用数组会让我的生活变得更轻松。这是一个名为:

的函数
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']);
                  }
            }
          }
}

此功能打印:

this is the variable to be stored:
Array( [0] => Array ( [item] => Powered Speaker [note] => [quantity] => 2 [price] => 200.00 [category] => Audio ) [1] => Array ( [item] => Wireless Microphone [note] => Lavalier [quantity] => 3 [price] => 175.00 [category] => Audio ))

This is the value of the database:
Array

在phpMyAdmin中,我在event_items列中看到的只是Array这个词。

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

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

您正尝试在单个数据库记录中插入多个值,这不是不可能的,但一般情况下也不建议这样做。

有人会这样做的主要原因是优化,这完全不是你现在应该担心的事情。

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

答案 2 :(得分:2)

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

示例:

serialize($event_items);
  

生成值的可存储表示。

     

这对于存储或传递PHP值而不会丢失非常有用   他们的类型和结构。

http://php.net/manual/en/function.serialize.php