• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP从MySQL数据库读出数据用在微信公众号上

php 搞代码 4年前 (2022-01-23) 13次浏览 已收录 0个评论
文章目录[隐藏]

做微信公众平台 在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 					 						 							<Title></Title>  							 							 							 						 						 					 					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  					 					 					1434676852					 					1 					 						 							<Title></Title>  							 							 							 						 						 					 					1 				

首先,这代码是有很大问题的。
1.数据库查询信息条数,使用while($_ROW = $_ROWS->fetch_assoc())表示循环查询嘛,不知道你数据库中有多少条记录。假设只有一条,那最好。在这里你(本文来)源gaodaimacom搞#^代%!码&网(

搞gaodaima代码

可以使用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 = "        <Title></Title>                                ";        $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                                                                           <Title></Title>                                                                                                                                                                                   1                 ";                 $resultStr = sprintf($textTpl, $postObj->FromUserName, $postObj->ToUserName, time(),$_ROW['ess_Title'],$_ROW['ess_Description'],$_ROW['ess_PictureUrl'],$_ROW['ess_Url']);                return $resultStr;    }  

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP从MySQL数据库读出数据用在微信公众号上
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址