PHP從MySQL資料庫讀出資料用在微信公眾號上

來源:互聯網
上載者:User
做公眾平台 在php頁面從資料庫中讀取資料,用在公眾平台的關注自動回複上
求指教怎麼做
public function handleEvent($postObj){ //header('Content-type:text/html;charset=utf-8');                                 //定義輸出格式編碼為utf-8   $db = new mysqli('127.0.0.1','root','123','weixin');                               //建立mysql資料庫連接   $_ROWS = $db->query('SELECT * FROM event_subscribe');                          //用sql語句擷取資料   //mysql_query("set names utf8");//設定編碼utf8   while($_ROW = $_ROWS->fetch_assoc())        //$title= $_ROW->ess_Title;    //$Description= $_ROW->ess_Description;    //$PicUrl= $_ROW->ess_PictureUrl;    //$Url= $row->ess_Url;          $title= $_ROW['ess_Title'];    $Description= $_ROW['ess_Description'];    $PicUrl= $_ROW['ess_PictureUrl'];    $Url= $row['ess_Url'];  //$contentStr = "歡迎關注喲";  $fromUsername = $postObj->FromUserName;$toUsername = $postObj->ToUserName;$msgType = "news";  $time = time();$textTpl = " %s %s %snews 1   <![CDATA[%s]]>  %s %s %s    1 ";$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time,$title,$Description,$PicUrl,$Url);        echo $resultStr;    


回複討論(解決方案)


沒有值傳到item內各項
log

2015-06-19 09:20:52 QUERY_STRING:signature=2580385de24285215c55584528a9732b68327681&timestamp=1434676848&nonce=18942184112015-06-19 09:20:52  oTVfwt8FLtDlTnKOZgiolB-4dI6o gh_265404f8e5f8 1434676852news 1   <![CDATA[]]>        1 

首先,這代碼是有很大問題的。
1.資料庫查詢資訊條數,使用while($_ROW = $_ROWS->fetch_assoc())表示迴圈查詢嘛,不知道你資料庫中有多少條記錄。假設只有一條,那最好。在這裡你可以使用var_dump($_ROW),查看下數組結構,再進行賦值。我推薦多條記錄使用$_ROW = $_ROWS->fetch_array()的方式,fetch_array()查詢結果為二維數組。assoc是一維數組。多條記錄用二維,單條記錄用一維即可。
2.回複資訊類型是圖文訊息,xml資料包中聲明的是單圖文,也就只能接收一條資料庫記錄了。你之前sql查詢的沒有where條件,還是先var_dump看一下。
3.最後的echo使用時記得改成return。

這個代碼中讓我最費解的是那個第8行的where。既然使用了where,說明你知道會查詢多條記錄。如果只有一條記錄,那麼
1.將sql查詢語句設定where條件,保證只能查出一條記錄。
2.不使用where,改成if(記得下面的代碼用括弧括起來),或者乾脆去掉where,只保留$_ROW = $_ROWS->fetch_assoc()

如果要組合多圖文訊息,那麼
1.使用do{}---while()迴圈,因為我之前講過,while迴圈會丟失第一條記錄(這或許就是你查不到賦值資訊的原因)。
2.迴圈

public function handleEvent($postObj)    {            //header('Content-type:text/html;charset=utf-8');                                 //定義輸出格式編碼為utf-8   $db = new mysqli('127.0.0.1','root','123','weixin');                               //建立mysql資料庫連接   $_ROWS = $db->query('SELECT * FROM event_subscribe limit 5');                          //用sql語句擷取資料   $newsArray = array(); do { $newsArray[]=array("Title"=>$_ROW['ess_Title'],  "Description"=>$_ROW['ess_Description'], "PicUrl"=>$_ROW['ess_PictureUrl'], "Url" =>$row['ess_Url']); }while ($_ROW = $_ROWS->fetch_array());         $itemTpl = "        <![CDATA[%s]]>        %s        %s        %s        ";        $item_str = "";        foreach ($newsArray as $item){        $item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']);        }        $newsTpl = "        %s        %s        %s        news        %s                $item_str        ";                $result = sprintf($newsTpl, $postObj->FromUserName, $postObj->ToUserName, time(), count($newsArray));        return $result;    }  

新的代碼

public function handleEvent($postObj)    {             //header('Content-type:text/html;charset=utf-8');                                 //定義輸出格式編碼為utf-8   $db = new mysqli('127.0.0.1','root','123','weixin');                               //建立mysql資料庫連接   $db->query("SET NAMES utf8");//防止亂碼   $_ROWS = $db->query('SELECT * FROM event_subscribe where IsPublic=1');                          //用sql語句擷取資料   $_ROW = mysqli_fetch_assoc($_ROWS);      $textTpl = "                     %s                     %s                     %s                    news                     1                                                                           <![CDATA[%s]]>                              %s                             %s                             %s                                                                                           1                 ";                 $resultStr = sprintf($textTpl, $postObj->FromUserName, $postObj->ToUserName, time(),$_ROW['ess_Title'],$_ROW['ess_Description'],$_ROW['ess_PictureUrl'],$_ROW['ess_Url']);                return $resultStr;    }  
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.