首页 > 如何把数组存进数据库?

如何把数组存进数据库?

先说说自己的需求吧——根据标签实现相关文章并实现文章索引,现有三表:文章表(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("添加失败!");
      }
       
    }

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

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


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


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

【热门文章】
【热门文章】