如何把数组存进数据库?

先说说自己的需求吧——根据标签实现相关文章并实现文章索引,现有三表:文章表(id,title...),标签表(tagid,tag),标签文章对应关系表(aid,tagid):在文章发布页面添加标签字段并把一文章多标签的情况拆分存储进数据库。在不使用explode()的情况下,mysql可以用顺利获取到字段信息和添加的数据信息,但是当使用了explode()后就不可以了,字段信息和value一直为空。问:可以怎么实现一文章多标签以及索引的效果?或者说以下代码可以怎么改善。
图片描述
图片描述

$article=I("post.post");
      $article['eid']=I("post.eid");
      $tags=I("post.tags");
      $tags['tag']=explode(",",I("post.tag"));
      $article['smeta']=json_encode($_POST['smeta']);
      $article['post_content']=htmlspecialchars_decode($article['post_content']);
      $result=$this->posts_model->add($article);
      $result2=$this->tags_model->add($tags);
      echo $this->tags_model->getLastSql();
      dump($tags);
      if ($result && $result2) {
        
        $this->tag_relationships_model->add(array("aid"=>$result,"tagid"=>$result2));

        foreach ($_POST['term'] as $mterm_id){
          $this->term_relationships_model->add(array("term_id"=>intval($mterm_id),"object_id"=>$result));
        }
        $this->success("添加成功!");
      } else {
        $this->error("添加失败!");
      }
       
    }
阅读 9.9k
6 个回答

保存数组可以用serialize进行序列化后进行存储

tag标签建议还是弄个tag的关系表,一个tag关键词对应多个文章,文章id进行序列化保存

数据序列化吧,取出来的时候在反序列化,json格式也是可以。

你上面代码用反了,得用implode

用序列化或者json转成字符串格式存入用的时候在转回数组就可以了

这个可以用很多种方法啊, 你可以json_decode下, 也后者可以序列化,或者用implode函数劈开,都可以, 反正想办法转化成字符串就可以了

mysql5.7 支持json存储,而且可以用sql操作json字段,很方便

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏