最近想做一个微信公众号玩玩,然后遇到一个问题,想了半天没有头绪,想来看看,问题如下:
我把数据库的连接和简单的增,删,改,查都写入在了mysqltest.php中,然后在index.php中导入调用这些方法。然而运行项目后数据库的数据没有任何改变,sql语句执行失败,但是我写的测试方法是可以向数据库中添加修改数据的。有没有大神来帮忙看看问题的所在,谢谢了。附上代码
这是mysqltest.php中的代码(登陆数据库的用户名和密码我用*代替了)
$con=mysql_connect("rds9b8s9gl540sop5dh7.mysql.rds.aliyuncs.com:3306", "mm********", "mm********");
if (!$con){
echo "shibai";
}else{
echo "success!";
}
mysql_select_db("ryj41g99c0",$con);
//查询数据
function _select_date($q,$con){
return $result=mysql_query($q) or die("no date");
}
//修改数据
function _update_date($q,$con){
$result=mysql_query($q,$con);
$a=mysql_affected_rows($con);
if($a>0){
return 0;
}else{
return 1;
}
}
//删除数据
function _delete_date($q,$con){
$result=mysql_query($q,$con);
$a=mysql_affected_rows($con);
if($a>0){
return 0;
}else{
return 1;
}
}
//添加数据
function _insert_date($q,$con){
$result=mysql_query($q,$con);
$a=mysql_affected_rows($con);
if($a>0){
return 0;
}else{
return 1;
}
}
?>
这是index.php的代码
<?php
require_once("mysqltest.php");
header('Content-type:text');
//require_once("xiaoxi/weather.php");
define("TOKEN", "aaa");
$wechatObj = new wechatCallbackapiTest();
if (isset($_GET['echostr'])) {
$wechatObj->valid();
}else{
$wechatObj->responseMsg();
}
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
if($this->checkSignature()){
header('content-type:text');
echo $echoStr;
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
public function responseMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$msgType = "text";
if(!empty($keyword)){
$sql = "SELECT flag_id FROM user_flags WHERE from_user = 'mei' LIMIT 0,1";
$result=_select_date($sql,$con);
while($rows=mysql_fetch_array($result)){
$user_flag = $rows[flag_id];
}
//如果用户输入“帮助”,则输出欢迎语,删除用户状态并直接退出
if($keyword == "帮助" || $keyword == "菜单" || $keyword == "功能" || $keyword == "导航" || $keyword == "提示")
{
$contentStr = "感谢您关注【有卡余额不足】\n请回复序号:\n1. 天气查询\n2. 翻译查询\n输入【帮助】查看提示\n更多内容,敬请期待...";
echo $this->handtext($postObj,$contentStr);
$a= "DELETE FROM user_flags WHERE from_user = '$fromUsername'";
_delete_date($a,$con);
exit();
}
//如果用户输入的内容和数据库中存储的不一样,并且又数字选项,则删除数据库中的内容,并把user_flag的值重置为空
if(($keyword <> trim($user_flag)) && is_numeric($keyword)){
$user_flag="";
$b = "DELETE FROM user_flags WHERE from_user = '$fromUsername'";
_delete_date($b,$con);
//exit();
}
if (empty($user_flag))
{
switch ($keyword)
{
case 1: //查询天气
$c= "insert into user_flags(from_user,flag_id) values('$fromUsername',1)";
$contentStr = "请输入要查询天气的城市:如北京、上海、深圳";
break;
case 2: //翻译
$c = "insert into user_flags(from_user,flag_id) values('$fromUsername',2)";
$contentStr = "请输入要翻译的内容:如:早上好、good morning、おはよう";
break;
default: //其他
$c = "";
$contentStr = "感谢您关注【有卡余额不足】\n请回复序号:\n1. 天气查询\n2. 翻译查询\n输入【帮助】查看提示\n更多内容,敬请期待...123";
break;
}
//判断并执行上面的插入语句
if (!empty($c))
{
_insert_date($c,$con);
}
//用户状态不为空
}else{
if ($user_flag == 1)
{
$contentStr ="查询天气";
//_weather($keyword); //查询天气
}elseif ($user_flag == 2)
{
$contentStr = "翻译";
//_baiduDic($keyword); //翻译
}
}
$resultStr=$this->handtext($postObj, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}else{
echo "";
exit;
}
}
function handtext($postObj,$contentStr){
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%d</FuncFlag>
</xml>";
$resultStr = sprintf($textTpl, $postObj->FromUserName, $postObj->ToUserName, time(), $contentStr, $flag);
return $resultStr;
}
}
?>
下面是我测试的时候写的代码
<?php
require_once("mysqltest.php");
$fromUsername="man";
$a="DELETE FROM user_flags WHERE from_user = '$fromUsername'";
_detele_date($a,$con);
?>