PHP操作数据库增,删,改,查的问题

最近想做一个微信公众号玩玩,然后遇到一个问题,想了半天没有头绪,想来看看,问题如下:
我把数据库的连接和简单的增,删,改,查都写入在了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);
?>





2个回答

 require_once("mysqltest.php");
$fromUsername="man";
$a="DELETE FROM user_flags WHERE from_user = '$fromUsername'";
_detele_date($a,$con);

你这的$con是怎么来的?

zhangsheng_1992
zhangsheng_1992 回复YaYa_so建立连接以后会返回一个资源符 如果不写的话 默认会取上一个连接的资源符 会不会是这个原因 我去找找答案 到时候好了告诉你
接近 4 年之前 回复
YaYa_so
YaYa_so mysqltest.php里面的
接近 4 年之前 回复
YaYa_so
YaYa_so $con=mysql_connect("rds9b8s9gl540sop5dh7.mysql.rds.aliyuncs.com:3306", "mm********", "mm********");
接近 4 年之前 回复

这样的话你先在

 $a="DELETE FROM user_flags WHERE from_user = '$fromUsername'";
_detele_date($a,$con);

这个位置打印一下$con
如果有连接信息的话 然后你再在
_insert_date($q,$con)这个方法中打印下 如果正确

在查看下你的sql 不过估计不是sql的问题

YaYa_so
YaYa_so 谢谢了,我弄好了,我把mysql_query($q,$con);里的$con,删除了就好了,不过我还是没想明白,我以前写mysql_query()的时候都是带上的,色为什么这不行。总之谢谢了
接近 4 年之前 回复
YaYa_so
YaYa_so 这是我写的测试方法,这个是可以运行的,完全没问题,就是放到index.php中的时候就有问题了,无论做什么动作数据库里的数据都没反应
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问