gpt4 book ai didi

php - 如果输入复选框,如何更新序列化数组

转载 作者:行者123 更新时间:2023-11-29 19:26:16 25 4
gpt4 key购买 nike

我正在学习序列化,虽然我理解这个概念,但我不熟悉它的局限性。

以下是一个虚构的场景,假设我有一个名为 week 的表格,表格 week 中有 3 列。第三列保存序列化数据,如下:

INSERT INTO `week` (`week_id`, `meal_code`, `meal_id`) VALUES
(1, 'week12016', 'a:7:{i:0;s:1:"1";i:1;s:1:"2";i:2;s:1:"3";i:3;s:1:"4";i:4;s:1:"5";i:5;s:1:"6";i:6;s:1:"7";}'),

然后我有另一张 table ,名为,里面的餐如下:

INSERT INTO `meal` (`meal_id`, `meal_name`) VALUES
(1, 'Chorizo tapas'),
(2, 'Mediterranean halloumi burger'),
(3, 'Lamb Moussaka'),
(4, 'Snappy Asian Fish En Papillote'),
(5, 'Puttanesca Risotto'),
(6, 'Mexican Pork Chilli With Apple Salsa'),
(7, 'Warm Greek Salad');

现在假设我有一些带有一些复选框的 HTML,如下所示:

Monday     [] 
Tuesday []
Wednesday []
Thursday []
Wednesday []
Thursday []
Friday []
Saturday []
Sunday []

然后我决定添加另一餐,其 Meal_id 为 8 并勾选星期一框,是否可以更新序列化数组以反射(reflect)勾选框,使其显示如下:

'a:7:{i:0;s:1:"8";i:1;s:1:"2";i:2;s:1:"3";i:3;s:1:"4";i:4;s:1:"5";i:5;s:1:"6";i:6;s:1:"7";}'),

看看“8”现在是如何取代“1”的。餐 table 有点无关紧要,因为它是一个序列化数组,但我已将其添加到上下文中。

我想知道是否可以做我所描述的事情?

假设我猜测是这样的:

$monday=$_POST['monday'];    
$result = mysqli_query($conn,"SELECT meal_id from WEEK");
$array = unserialize( $result );
$array[0] = $meal_id;
$sfood=serialize($array);

if ($_POST['weekday'] == 'monday')
{
mysqli_query($conn, "UPDATE week SET meal_id ('$sfood') ");
}

我知道上面的内容不正确,但这是我尝试过的,但不知道下一步该做什么。

最佳答案

您应该在数据库中使用序列化数据的唯一时间是当它与数据关系完全无关时...想想存储 CSS 规则或其他东西,当您选择一行来帮助设置其样式时可以使用它们,但是有与实际数据中的条件或关系无关。

也就是说,您的 $result 实际上并不是您想象的那样,它是一个 sql 结果集...您需要从中获取一行或多行:

while($row = $result->fetchObject()){
$meal_id = $row->meal_id;
}

当您拥有所需的内容时,您还需要在运行另一个查询之前关闭连接:

$结果->关闭

但是由于您似乎才刚刚开始,因此您可能也应该了解 PDO。根据我的经验,它更适合很多项目。

关于php - 如果输入复选框,如何更新序列化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42124143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com