muchener's blogs

微信公众号连接数据库查询

字数统计: 701阅读时长: 3 min
2016/06/22 Share

因为七月底要面临小鲜肉们入学的此等好事,所以就打算给学院的官方公众微信平台加个用姓名查询学号、班级、课表之类的东西,每年手动输入的真的是挺累的,方便学弟学妹。其次呢,这个微信公众号代表代表着计算机学院,连微信都不能高大上一点,可怎么吸引学弟学妹们呢??于是乎,我就想可以先做出个样子,然后管辅导员要点经费,一台云主机+一个域名再加上一个人,就足够了。我真是个心机婊!!!!好吧,切入正题。

这次肯定还是借鉴了http://www.cnblogs.com/mchina/p/3332283.html这个系列的文章,大部分代码都是复制粘贴来的,不过有部分代码他的文章中有错误细致观察吧。至于封装成类?就算了吧,我懒。测试过一些简单的sql注入语句,可能是因为返回xml格式的数据,所以不存在表面的注入漏洞,不过求黑阔们不要当靶机T_T

这个功能的实现主要需要两个步骤,一是连接数据库,二是查询。

step1:数据库连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
function MysqlConnect()
{
$dbname = "wchat";
$host = "xx.xx.xx.xx";
$user = "username";
$pwd = "password";
$link = @mysql_connect($host,$user,$pwd,true);
if(!$link) {
die("Connect Server Failed: " . mysql_error());
}
/*连接成功后立即调用mysql_select_db()选中需要连接的数据库*/
if(!mysql_select_db($dbname,$link)) {
die("Select Database Failed: " . mysql_error($link));
}
}
?>

step2:查询。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
function Research($keyword)
{
$keyword = explode("+", $keyword);
str_ireplace(array("'","\"","or","=","select","union"),"",$keyword);
include("MysqlConnect.php");
MysqlConnect();
//检索数据
$select_sql = "select id,name,grade from test1 where name =\"$keyword[1]\"";
mysql_query("set names utf8");
$select_res = mysql_query($select_sql) or die('SQL语句有错误,错误信息:'.mysql_error());
$rows = mysql_fetch_assoc($select_res);
if($rows!='')
{
$contentStr = "学号:".$rows['id']."\t"."班级:".$rows['grade']."\t"."姓名:".$rows['name']."\t";
}
else
{
$contentStr = "计算机学院没有该姓名的学生";
}
return $contentStr;
}
?>

step3:对index.php中的recievetext函数进行修改

1
2
3
4
5
6
7
8
9
10
11
12
private function receiveText($object)
{
$funcFlag = 0;
$keyword = trim($object->Content);
if(strstr($keyword, "查询"))
{
include("Research.php");
$contentStr = Research($keyword);
}
$resultStr = $this->transmitText($object, $contentStr, $funcFlag);
return $resultStr;
}

最后不得不说我测试的时候面对这个乱码问题真是不知所措,男朋友给我改了好久!!!最后在上边那个网址文章的第5小结所有的函数开始加了句mysql_query(“set names utf8”);乱码才正常了!

测试结果

使用excel导入

注:可能存在sql注入,可以再做一些更严谨的过滤。

CATALOG
  1. 1. step1:数据库连接
  2. 2. step2:查询。
  3. 3. step3:对index.php中的recievetext函数进行修改