Search inside serialize data with MYSQL

2019-03-22 08:27发布

问题:

I'd like to search inside serialized array, data look like :

a:7:{i:0;s:2:"34";i:1;s:1:"0";i:2;s:2:"42";i:3;s:2:"33";i:4;s:2:"48";i:5;s:2:"62";i:6;s:2:"47";}

I tried this:

$id_serialize = '"'.$id.'"';
$req = requette("SELECT id FROM table WHERE col LIKE '%$id_serialize%'"); 

But it's not working, any solution? Thanks.

回答1:

Your query is formatted a little wrong. If you are trying to pass $id_serialize to your query, it needs to be formatted like this:

$id_serialize = $id;
$req = requette("SELECT id FROM table WHERE col LIKE '%" . $id_serialize . "%'");


回答2:

foreach  ($array as $item) $keys[]=md5(serialize($item));

$sql="insert into table set col='".serialize($array)."', `keys`='".implode(' ',$keys)."'";

...

$item=5;
$key=md5(serialize($item))
$sql="select id from table where MATCH (`keys`) AGAINST ('$key' IN BOOLEAN MODE)";

...

field keys has FULLTEXT index



回答3:

You're building $id_serialize, but are using $serialize in the query string., so you're searching for ... LIKE '%%', most likely.