【问题标题】:Search inside serialize data with MYSQL使用 MYSQL 在序列化数据中搜索
【发布时间】:2011-04-11 18:58:00
【问题描述】:

我想在序列化数组中搜索,数据如下:

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%'"); 

但它不起作用,有什么解决办法吗? 谢谢。

【问题讨论】:

标签: php mysql wordpress


【解决方案1】:

您的查询格式有点错误。如果您尝试将$id_serialize 传递给您的查询,则需要采用如下格式:

$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)";
    

    ...

    字段 keys 具有 FULLTEXT 索引

    【讨论】:

      【解决方案3】:

      您正在构建$id_serialize,但在查询字符串中使用$serialize。因此您很可能正在搜索... LIKE '%%'。

      【讨论】:

      • 不抱歉,我只是在这里编辑我的发布代码,在我的应用程序中,我使用了好的代码。
      猜你喜欢
      • 2020-03-13
      • 2012-05-17
      • 1970-01-01
      • 2012-04-06
      • 2014-08-21
      • 2015-12-23
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      相关资源
      最近更新 更多