微信公众号读取mysql数据源码_PHP从MySQL数据库读出数据用在微信公众号上

做微信公众平台 在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 1 1";$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time,$title,$Description,$PicUrl,$Url); echo $resultStr;

回复讨论(解决方案)

没有值传到item内各项

log2015-06-19 09:20:52 QUERY_STRING:signature=2580385de24285215c55584528a9732b68327681&timestamp=1434676848&nonce=18942184112015-06-19 09:20:52 1434676852 1 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 = ""; $item_str = ""; foreach ($newsArray as $item){ $item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']); } $newsTpl = "%s %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 1 1"; $resultStr = sprintf($textTpl, $postObj->FromUserName, $postObj->ToUserName, time(),$_ROW['ess_Title'],$_ROW['ess_Description'],$_ROW['ess_PictureUrl'],$_ROW['ess_Url']); return $resultStr; }

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值