首頁 >後端開發 >php教程 >微信開發 php 資料庫查詢,回覆訊息,無法取得資料?還是格式有誤?

微信開發 php 資料庫查詢,回覆訊息,無法取得資料?還是格式有誤?

WBOY
WBOY原創
2016-10-23 00:12:51958瀏覽

過程是這樣的

  1. 解析微信寄來的xml,取得使用者傳送的內容

  2. 根據內容,進行判斷回覆

  3. 讀取資料庫內容,作為字串傳回,回覆訊息

但是好像在資料庫操作中出現了問題,怎麼都回覆不了。其它 case '1' 等等都沒問題。

我試圖在方法getSql() 中在每一步中添加 echo '成功' 測試,到下面我註釋的地方就不再返回,大神們看看怎麼回事?

怎麼查看支不支援mysqli呢?我是CentOS 6.7 php 5.6 phpinfo() 顯示的關於mysqli 的內容如下:

我知道windows上的php裡面有個extension 開啟就可以了,linux 裡面的php設定是什麼樣的呢?

微信開發 php 資料庫查詢,回覆訊息,無法取得資料?還是格式有誤?
微信開發 php 資料庫查詢,回覆訊息,無法取得資料?還是格式有誤?

<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>

回覆內容:

過程是這樣的

  1. 解析微信寄來的xml,取得使用者傳送的內容

  2. 根據內容,進行判斷回覆

  3. 讀取資料庫內容,作為字串傳回,回覆訊息

但是好像在資料庫操作中出現了問題,怎麼都回覆不了。其它 case '1' 等等都沒問題。

我試圖在方法getSql() 中在每一步中添加 echo '成功' 測試,到下面我註釋的地方就不再返回,大神們看看怎麼回事?

怎麼查看支不支援mysqli呢?我是CentOS 6.7 php 5.6 phpinfo() 顯示的關於mysqli 的內容如下:

我知道windows上的php裡面有個extension 開啟就可以了,linux 裡面的php設定是什麼樣的呢?

微信開發 php 資料庫查詢,回覆訊息,無法取得資料?還是格式有誤?
微信開發 php 資料庫查詢,回覆訊息,無法取得資料?還是格式有誤?

<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>

資料庫這部分每一行都沒錯,放到一起就錯了。
前面是連接是過程導向的方法mysqli_connect
後面查詢和取值是物件導向的方法

mysqli_connect換成new mysqli

試著用mysql_connect(),mysql_select_db()和mysql_query()處理

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn