Heim >Backend-Entwicklung >PHP-Tutorial >WeChat entwickelt PHP-Datenbankabfragen, antwortet auf Informationen, kann aber keine Daten abrufen? Oder ist das Format falsch?
Der Prozess ist so
Parsen Sie die von WeChat gesendete XML-Datei und erhalten Sie den vom Benutzer gesendeten Inhalt
Antwort basierend auf dem Inhalt
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.6phpinfo()
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?
<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>
Der Prozess ist so
Parsen Sie die von WeChat gesendete XML-Datei und erhalten Sie den vom Benutzer gesendeten Inhalt
Antwort basierend auf dem Inhalt
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.6phpinfo()
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?
<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
mysqli_connect
durch new mysqli
Versuchen Sie es mit mysql_connect(), mysql_select_db() und mysql_query()