Home >Backend Development >PHP Tutorial >WeChat develops PHP database query, replies to information, but cannot obtain data? Or is the format wrong?

WeChat develops PHP database query, replies to information, but cannot obtain data? Or is the format wrong?

WBOY
WBOYOriginal
2016-10-23 00:12:51958browse

The process is like this

  1. Parse the xml sent by WeChat and obtain the content sent by the user

  2. Reply based on the content

  3. Read the database content, return it as a string, and reply to the message

But it seems that there is a problem in the database operation and I can’t reply. Others case '1' etc. are fine.

I tried to add echo 'success' test in each step of the method getSql(). It will not return to the place I commented below. Can anyone tell me what's going on?

How to check whether mysqli is supported? I am CentOS 6.7 php 5.6 phpinfo() The content displayed about mysqli is as follows:

I know that there is an extension in PHP on Windows, which can be turned on. What is the PHP configuration in Linux like?

WeChat develops PHP database query, replies to information, but cannot obtain data? Or is the format wrong?
WeChat develops PHP database query, replies to information, but cannot obtain data? Or is the format wrong?

<code class="php">/*
-------------------------------------
判断信息事件,根据用户发来的信息内容,判断回复
$arr: 解析后的 微信发来的数据
--------------------------------------
*/
    public function rspText($arr){
        switch (trim(strtolower($arr->Content))){
            case '1':{
                $this->replyMsg($arr,"success");
            };break;
            case '2':{
                $this->replyMsg($arr,$this->getSql());
            };break;
            case 'time':{
                $this->replyMsg($arr,date("Y-m-d")."\n".date("H:i:s"));
            };break;
            default: $this->replyMsg($arr,"看海哟");
        }
    }

/*
-----------------------------------
回复信息
$arr : 微信发来的 post 数据解析后的对象
$content: 要回复的内容,字符串
-----------------------------------
*/
    public function replyMsg($arr,$content="")
    {
        $toUser = $arr->ToUserName;
        $fromUser = $arr->FromUserName;
        $time = time();
        $msgType = 'text';
        $rspPatten = '<xml>
                    <ToUserName><![CDATA[%s]]></ToUserName>
                    <FromUserName><![CDATA[%s]]></FromUserName>
                    <CreateTime>%s</CreateTime>
                    <MsgType><![CDATA[%s]]></MsgType>
                    <Content><![CDATA[%s]]></Content>
                    </xml>';
        $rspMsg = sprintf($rspPatten, $fromUser, $toUser, $time, $msgType, $content);
        echo $rspMsg;
    }

//读取数据库内容
    public function getSql(){
        $host= "111.111.111.111";
        $port = '1111';
        $database = "wordpress";
        $table = "wp_posts";
        $user = "1111";
        $passwd = "1111";
        $sql = "select post_title from ".$table." limit 1,10";


        //!!!!!!!!!到此处还是可以返回的,下面这句就不再返回了!!!!!!!
        
        
        $link = mysqli_connect($host,$user,$passwd,$database,$port);

        $tempResult = $link->query($sql);
        $str = "";
        while($row = $tempResult->fetch_array()){
            $str = $str.$row['post_title'];
        }
        $link->close();

        return $str; //返回字符串
    }</code>

Reply content:

The process is like this

  1. Parse the xml sent by WeChat and obtain the content sent by the user

  2. Reply based on the content

  3. Read the database content, return it as a string, and reply to the message

But it seems that there is a problem in the database operation and I can’t reply. Others case '1' etc. are fine.

I tried to add echo 'success' test in each step of the method getSql(). It will not return to the place I commented below. Can you guys tell me what's going on?

How to check whether mysqli is supported? I am CentOS 6.7 php 5.6 phpinfo() The content displayed about mysqli is as follows:

I know that there is an extension in PHP on Windows, which can be turned on. What is the PHP configuration in Linux like?

WeChat develops PHP database query, replies to information, but cannot obtain data? Or is the format wrong?
WeChat develops PHP database query, replies to information, but cannot obtain data? Or is the format wrong?

<code class="php">/*
-------------------------------------
判断信息事件,根据用户发来的信息内容,判断回复
$arr: 解析后的 微信发来的数据
--------------------------------------
*/
    public function rspText($arr){
        switch (trim(strtolower($arr->Content))){
            case '1':{
                $this->replyMsg($arr,"success");
            };break;
            case '2':{
                $this->replyMsg($arr,$this->getSql());
            };break;
            case 'time':{
                $this->replyMsg($arr,date("Y-m-d")."\n".date("H:i:s"));
            };break;
            default: $this->replyMsg($arr,"看海哟");
        }
    }

/*
-----------------------------------
回复信息
$arr : 微信发来的 post 数据解析后的对象
$content: 要回复的内容,字符串
-----------------------------------
*/
    public function replyMsg($arr,$content="")
    {
        $toUser = $arr->ToUserName;
        $fromUser = $arr->FromUserName;
        $time = time();
        $msgType = 'text';
        $rspPatten = '<xml>
                    <ToUserName><![CDATA[%s]]></ToUserName>
                    <FromUserName><![CDATA[%s]]></FromUserName>
                    <CreateTime>%s</CreateTime>
                    <MsgType><![CDATA[%s]]></MsgType>
                    <Content><![CDATA[%s]]></Content>
                    </xml>';
        $rspMsg = sprintf($rspPatten, $fromUser, $toUser, $time, $msgType, $content);
        echo $rspMsg;
    }

//读取数据库内容
    public function getSql(){
        $host= "111.111.111.111";
        $port = '1111';
        $database = "wordpress";
        $table = "wp_posts";
        $user = "1111";
        $passwd = "1111";
        $sql = "select post_title from ".$table." limit 1,10";


        //!!!!!!!!!到此处还是可以返回的,下面这句就不再返回了!!!!!!!
        
        
        $link = mysqli_connect($host,$user,$passwd,$database,$port);

        $tempResult = $link->query($sql);
        $str = "";
        while($row = $tempResult->fetch_array()){
            $str = $str.$row['post_title'];
        }
        $link->close();

        return $str; //返回字符串
    }</code>

Every row in this part of the database is correct, but when put together they are wrong.
The connection in the front is a process-oriented methodmysqli_connect
The query and value retrieval in the back are object-oriented methods

Replace

mysqli_connect with new mysqli

Try using mysql_connect(), mysql_select_db() and mysql_query()

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn