我开始进入数组并且不能让它运行良好。我习惯使用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的表),每个订单也有一个或多个事件(另一个表)。最后,每个事件将有一个或多个项目(每个项目及其相应的价格,数量,注释和类别),这些项目存储在事件表中的一个(或多个)列中。
答案 0 :(得分:6)
不要尝试将数组存储在一个字段中。您应该将数组中的每个项目存储为相关表中的自己的行。
答案 1 :(得分:3)
您正尝试在单个数据库记录中插入多个值,这不是不可能的,但一般情况下也不建议这样做。
有人会这样做的主要原因是优化,这完全不是你现在应该担心的事情。
您真正想要做的是检查数据库架构,如果您希望存储一个值数组,则需要为每个架构创建一个新行(记录)。这可能需要创建另一个表,具体取决于您想要做什么。
答案 2 :(得分:2)
您可以使用serialize()函数序列化数组。
示例:
serialize($event_items);
生成值的可存储表示。
这对于存储或传递PHP值而不会丢失非常有用 他们的类型和结构。