Поиск внутри сериализации данных с MYSQL - PullRequest
1 голос
/ 11 апреля 2011

Я бы хотел искать внутри сериализованного массива, данные выглядят так:

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";}

Я пробовал это:

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

Но это не работает, какое-либо решение? Спасибо.

Ответы [ 3 ]

4 голосов
/ 11 апреля 2011

Ваш запрос немного отформатирован.Если вы пытаетесь передать $id_serialize на ваш запрос, его необходимо отформатировать так:

$id_serialize = $id;
$req = requette("SELECT id FROM table WHERE col LIKE '%" . $id_serialize . "%'");
2 голосов
/ 10 марта 2012
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)";

...

поле keys имеет индекс FULLTEXT

0 голосов
/ 11 апреля 2011

Вы строите $id_serialize, но используете $serialize в строке запроса., Поэтому вы ищете ... LIKE '%%', скорее всего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...