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() –