Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从mySQL取消序列化值_Php_Mysql - Fatal编程技术网

Php 从mySQL取消序列化值

Php 从mySQL取消序列化值,php,mysql,Php,Mysql,我正在使用分类脚本,并将用户元数据保存在wp_usermeta表中。 meta_key字段称为user_address_info,其中包含以下所有数据: s:204:"a:7:{s:9:"user_add1";s:10:"my address";s:9:"user_add2";N;s:9:"user_city";s:7:"my city";s:10:"user_state";s:8:"my phone";s:12:"user_country";N;s:15:"user_postalcode";s

我正在使用分类脚本,并将用户元数据保存在wp_usermeta表中。 meta_key字段称为user_address_info,其中包含以下所有数据:

s:204:"a:7:{s:9:"user_add1";s:10:"my address";s:9:"user_add2";N;s:9:"user_city";s:7:"my city";s:10:"user_state";s:8:"my phone";s:12:"user_country";N;s:15:"user_postalcode";s:10:"comp phone";s:10:"user_phone";N;}";
我使用的不是脚本上的所有字段,而是user\u add1、user\u city、user\u state和user\u postalcode

我在使用SQL获取数据时遇到困难,如下面的示例(wordpress):

我想在这里得到一些帮助,以便我可以在任何地方(我不介意使用任何类型的SQL查询)显示请求的信息,例如当前作者ID的用户城市(例如25)

我得到了下面的例子,但我想要一些动态的东西

<?php
$s = 's:204:"a:7:{s:9:"user_add1";s:10:"my address";s:9:"user_add2";N;s:9:"user_city";s:7:"my city";s:10:"user_state";s:8:"my phone";s:12:"user_country";N;s:15:"user_postalcode";s:10:"comp phone";s:10:"user_phone";N;}"';
$u = unserialize($s);
$u2 = unserialize($u);
foreach ($u2 as $key => $value) {
   echo "<br />$key == $value";
}
?>


非常感谢。

不,您不能使用SQL取消序列化。
这就是为什么在数据库中存储序列化数据是一个非常糟糕的主意

做两次序列化就更糟糕了

因此,除了使用您提供的代码,您什么都没有。
不过我看不出有多少静电。
您是否遇到过任何特定的问题?

或者你只是想修复一些东西,却不知道该修复什么?摆脱序列化然后

我发现存储到数据库的序列化值被转换为其他格式。由于序列化数据存储使用引号、分号和括号,mysql需要单独保存,因此它会自动放置来自gpc_magic_引号(CMIIW)的“反斜杠()。因此,如果您存储序列化数据并希望使用它,那么在接口中应该使用html_entity_decode()来确保PHP读取的是实际格式

这是我的样本:

$ser = $data->serialization; // assume it is the serialization data from database
$arr_ser = unserialize(html_entity_decode($ser));
注意:我已经尝试过了,它很有效,并且确保避免将这种类型存储在表中(以避免风险)。这种方法也可以解决存储在表中的json格式

$ser = $data->serialization; // assume it is the serialization data from database
$arr_ser = unserialize(html_entity_decode($ser));