1
旧系统中的前开发人员之一我正在使用PHP serialize()
将一个数据数组平整为MySQL表的一列。在SQL中反序列化PHP数组
我需要编写一个涉及此列的复杂查询。是否有一种方法可以在SQL查询中反序列化数据(即使它是以逗号分隔的字符串),还是需要将结果传回给PHP?
旧系统中的前开发人员之一我正在使用PHP serialize()
将一个数据数组平整为MySQL表的一列。在SQL中反序列化PHP数组
我需要编写一个涉及此列的复杂查询。是否有一种方法可以在SQL查询中反序列化数据(即使它是以逗号分隔的字符串),还是需要将结果传回给PHP?
序列化的PHP数据只是一个字符串,因此对于“简单”搜索,您可以使用基本的MySQL字符串操作。
例如序列化阵列具有name
参数,你需要来匹配这一点,所以
... WHERE LOCATE(CONCAT('s:', LENGTH('foo'), ':foo') ,serializeddatafield) > 0
将产生
WHERE LOCATE('s:3:foo', serializeddata) > 0
但随后,这会发现任何字符串,其值是foo
在任何地方数据,而不一定在你想要的特定数组字段中。
例如你可能更擅长于整个领域,使用PHP进行反序列化,然后在那里进行搜索。但是,您可以使用上述技术来最大限度地减少您必须抽出/解析的字符串总数。
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html如果有任何帮助,你还需要使用PHP或你想爆炸逗号值? –
以及它不可能,因为mysql不知道任何关于PHP serialize()所以你需要PHP来处理unserialize() –