gpt4 book ai didi

php - 如何附加数据库中已存在的序列化字符串

转载 作者:行者123 更新时间:2023-11-29 03:22:20 24 4
gpt4 key购买 nike

我刚开始学习序列化,我有一个问题似乎找不到简单的解释。

假设我有一个名为 week 的表,在 week 内我有 3 列,第三列包含一堆序列化的膳食 ID,就像存储在我的数据库中一样:

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

但稍后我想将另一个 meal_id 附加到现有字符串但不更新任何其他列,因此它读取

(1, 'week12016','a:7:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;i:5;i:6;i:6;i:7;}') 

我试过在一个 php 文件中存储以下内容

$food=array("7");
$sfood=serialize($food);

然后尝试将 7 添加到周表中现有的 meal_ids

mysqli_query($conn,"UPDATE week
SET meal_id ('$sfood')");
//if entry into the database is successful, confirm with a alert popup and refresh the home page
if(mysqli_affected_rows($conn) > 0){
//header("location: admin.php");
header("refresh:0; url=admin.php");
echo "<script type='text/javascript'>alert('Upload Successful!')</script>";
exit;

但是当我检查我的数据库时,没有任何改变。

我做错了什么,是否有可能实现我想要实现的目标?

最佳答案

您必须从表格行中读取该列。将其反序列化为一个 PHP 变量,然后向其添加一个新事件。

然后序列化新数组并将其存储回您的数据库

// SELECT from table
$s = 'a:7:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;i:5;i:6;i:6;i:7;}';

$d = unserialize($s);

print_r($d);

$d[] = 99;
print_r($d);

$s2 = serialize($d);
echo $s2;

// UPDATE table row

结果

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 99
)
a:8:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;i:5;i:6;i:6;i:7;i:7;i:99;}

Storing data like this is not recommended, as it makes this data impossible to process using queries

关于php - 如何附加数据库中已存在的序列化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42115377/

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