前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接收发送消息与数据库交互

接收发送消息与数据库交互

作者头像
一粒小麦
发布2019-07-18 17:10:42
7800
发布2019-07-18 17:10:42
举报
文章被收录于专栏:一Li小麦一Li小麦

线上的接口的坑太多了。不如自己写一个吧。实际的业务场景中,可以用户回复关键词,可获取系统中相关的消息。

在查询接口中需要一个数据库。推荐新浪云虚拟主机

需求描述

回复id号(自然数)或标题,返回相应的古诗。效果图如下:

实现

在github上找到了一个古诗词数据——最全中华古诗词数据库, 唐宋两朝近一万四千古诗人, 接近5.5万首唐诗加26万宋诗. 两宋时期1564位词人,21050首词。

感谢数据来源贡献者。不过数据太大了(200M+)在此截取《诗经》305首作为基础数据。

源文件是json文件,在此通过navicat转换为shijing.sql文件导入到到线上数据库中。

数据款转换后存在一定的不良数据。

基本结构变成了m(数据模型-数据库)-v(视图)- c(控制逻辑)。

M-C层

写一个getPoetry函数。

首先是配置环境变量,打印数据

代码语言:javascript
复制
private function getPoetry($object){

            $word=trim($object->Content);


            // 环境配置
            $mysql_host='w.rdc.sae.sina.com.cn';
            $mysql_port='3306';
            $mysql_user='xolz3m1x2y';
            $mysql_password='yw5lzlz0055kkk2l23xwihyxli04x41j5hz0zh2j';
            $mysql_database='app_djtao';
            $mysql_table='shijing';
            $id=rand(1,305);

            // 查询语句
            $mysql_state = "SELECT * FROM `".$mysql_table."` WHERE `title` = '".$word."'";

            $con=mysql_connect($mysql_host.':'.$mysql_port,$mysql_user,$mysql_password);

            if(!$con){
                die('Could not connect:'.mysql_error());
            }

            mysql_query("SET NAMES 'UTF-8'");
            mysql_select_db($mysql_database,$con);
            $result=mysql_query($mysql_state);

            $content="";
            while($row=mysql_fetch_array($result)){//将数据以数字索引方式储存在数组中
                $content=$row;
                break;
            }

            mysql_close($con);

            $result=$this->transmitText($object,$content);

            return $result;

        }
视图层

加了一个不良数据处理。

代码语言:javascript
复制
private function transmitText($object,$content){
            if(!isset($content)||empty($content)){
                return "";
            }
                $xmlTpl="
                    <xml>
                        <ToUserName><![CDATA[%s]]></ToUserName>
                        <FromUserName><![CDATA[%s]]></FromUserName>
                        <CreateTime>%s</CreateTime>
                        <MsgType><![CDATA[text]]></MsgType>
                        <Content><![CDATA[%s]]></Content>
                    </xml>
                ";

                $str=$content['content'];//优化处理
                $str=str_replace('[','',$str);
                $str=str_replace(']','',$str);
                $str=str_replace('�','',$str);
                $str=str_replace('"','',$str);
                $str=str_replace(',','',$str);


                $result=sprintf($xmlTpl,$object->FromUserName,$object->ToUserName,time(),$content['title'].'【'.$content['chapter'].'·'.$content['section'].'】'.'            '.$str);

            return $result;
        }

由此,该需求顺利实现。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一Li小麦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求描述
  • 实现
    • M-C层
      • 视图层
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档