Heim >Backend-Entwicklung >PHP-Tutorial >WeChat entwickelt PHP-Datenbankabfragen, antwortet auf Informationen, kann aber keine Daten abrufen? Oder ist das Format falsch?

WeChat entwickelt PHP-Datenbankabfragen, antwortet auf Informationen, kann aber keine Daten abrufen? Oder ist das Format falsch?

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

Der Prozess ist so

  1. Parsen Sie die von WeChat gesendete XML-Datei und erhalten Sie den vom Benutzer gesendeten Inhalt

  2. Antwort basierend auf dem Inhalt

  3. Lesen Sie den Datenbankinhalt, geben Sie ihn als Zeichenfolge zurück und antworten Sie mit Informationen

Aber es scheint ein Problem im Datenbankbetrieb zu geben und ich kann nicht antworten. Andere case '1' usw. sind in Ordnung.

Ich habe versucht, in jedem Schritt der Methode einen getSql()Test hinzuzufügen. echo '成功'Ich werde nicht zu der Stelle zurückkehren, die ich unten kommentiert habe. Kann mir jemand sagen, was los ist?

Wie überprüfe ich, ob mysqli unterstützt wird? Ich bin CentOS 6.7 PHP 5.6 phpinfo() Der angezeigte Inhalt zu MySQL lautet wie folgt:

Ich weiß, dass es in PHP unter Windows eine Erweiterung gibt, die aktiviert werden kann. Wie ist die PHP-Konfiguration unter Linux?

WeChat entwickelt PHP-Datenbankabfragen, antwortet auf Informationen, kann aber keine Daten abrufen? Oder ist das Format falsch?
WeChat entwickelt PHP-Datenbankabfragen, antwortet auf Informationen, kann aber keine Daten abrufen? Oder ist das Format falsch?

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

Antwortinhalt:

Der Prozess ist so

  1. Parsen Sie die von WeChat gesendete XML-Datei und erhalten Sie den vom Benutzer gesendeten Inhalt

  2. Antwort basierend auf dem Inhalt

  3. Lesen Sie den Datenbankinhalt, geben Sie ihn als Zeichenfolge zurück und antworten Sie mit Informationen

Aber es scheint ein Problem im Datenbankbetrieb zu geben und ich kann nicht antworten. Andere case '1' usw. sind in Ordnung.

Ich habe versucht, in jedem Schritt der Methode einen getSql()Test hinzuzufügen. echo '成功'Ich werde nicht zu der Stelle zurückkehren, die ich unten kommentiert habe. Kann mir jemand sagen, was los ist?

Wie überprüfe ich, ob mysqli unterstützt wird? Ich bin CentOS 6.7 PHP 5.6 phpinfo() Der angezeigte Inhalt zu MySQL lautet wie folgt:

Ich weiß, dass es in PHP unter Windows eine Erweiterung gibt, die aktiviert werden kann. Wie ist die PHP-Konfiguration unter Linux?

WeChat entwickelt PHP-Datenbankabfragen, antwortet auf Informationen, kann aber keine Daten abrufen? Oder ist das Format falsch?
WeChat entwickelt PHP-Datenbankabfragen, antwortet auf Informationen, kann aber keine Daten abrufen? Oder ist das Format falsch?

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

Jede Zeile in diesem Teil der Datenbank ist korrekt, aber zusammengenommen sind sie falsch.
Die Verbindung vorne ist eine prozessorientierte Methodemysqli_connect
Die Abfrage und der Werteabruf hinten sind objektorientierte Methoden

Ersetzen wir

mysqli_connect durch new mysqli

Versuchen Sie es mit mysql_connect(), mysql_select_db() und mysql_query()

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn