MySQL中存储了序列化的字段,根据需求判断该条记录是否满足?
PHPz
PHPz 2017-04-17 13:40:50
0
3
414

额,大家好,首先感谢大家抽出时间看我的问题,可能描述不是很详细
我来举个例子吧,比如会员设置了自己的爱好,爱好是复选框,值分别是1,2,3···分别代表足球、篮球等等
PHP接收到的是数组,序列化之后再存到数据库,那用户在前台搜索同样爱好的会员,比如足球,怎么把数据表中有相同爱好的小伙伴查询出来呢?
我当时面对这个需求的时候,就两个选项,所以查询A爱好的时候,把A的值序列化,然后用like去查询,但总感觉这样做不太妥当,两个还好弄,如果N多个呢

PHPz
PHPz

学习是最好的投资!

全部回覆 (3)
PHPzhong

有查询需求你就不适合把这个东西用序列化的形式存储起来,另外建一个关联表,用你的例子来说的话是个爱好表,需要至少包括用户ID和爱好两个字段,搜索的时候去这个表来进行搜索,然后对用户ID进行去重得到你要的结果,再拿着这个结果去用户表进行select...in查询

    Ty80

    你这样设计已经存在问题了。这个对应关系要三张表。
    第一张用户表(uid)uid作为关联字段
    第二张兴趣表(hobby)hobby_id作为关联字段
    第三张用户兴趣表(uid_hobby)两个字段uid,hobby_id 就可以关联起来了。某个用户有哪几个爱好
    OK,你的需求是用户在前台搜索同样爱好的会员
    足球的ID是1
    所以如下语句。
    select uid from uid_hobby where hobby_id = 1即可查询出所有喜欢足球的会员(包括自己)
    最后再建议like除了满足左前缀之外,其他都不会走索引,全表扫描+匹配,效率极低。

      小葫芦

      mysqlfind_in_set

        最新下載
        更多>
        網站特效
        網站源碼
        網站素材
        前端模板
        關於我們 免責聲明 Sitemap
        PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!