本帖最后由 xcasp 于 2010-07-26 22:00:47 编辑

解决方案 »

  1.   

    判断一下 $sql 是否存在,
    print_r();一下吧
      

  2.   

    $sql = mysql_query("SELECT * FROM  mg_user WHERE Me_QQ='".$user."' && Me_Password='".$Me_Password."'",$conn);
    //这一句后面
    echo "SELECT * FROM  mg_user WHERE Me_QQ='".$user."' && Me_Password='".$Me_Password."'";
    var_dump($conn);
    var_dump($sql);
    exit;//看看结果
      

  3.   


     delimiter //
     create procedure islogin(qq_or_phone int(10),Me_password varchar(12))
     comment '传入一个值 不管他是QQ还是手机号 对两张表进行查询 如果在其中一张 且密码一致 就返回1否则返回0给php结果集'
     as
     begin 
      declare login int(1);
      
       select count(qq_or_phone) into login from mg_user where Me_Password = Me_password 
       and Me_phone = qq_or_phone or Me_QQ  = qq_or_phone;
       
     end//
     dilimiter; 那么你检查用户输入的时候直接用调用这个储存过程
    $string = 'call islogin($user,$Me_Password)';
    $rs = 'select @islogin';
    $login = $rs?1:0;只有一句SQL 你也可以不用SP 直接在查询的两个地方同时使用这个语句 但同时用几句 最好用SP
    select count(qq_or_phone) from mg_user where Me_Password = $Me_Password
       and Me_QQ = $user or ME_phone = $user;
    抛砖引玉 至于要把逻辑放到SQL中还是PHP中完全看你的个人喜好
    一般程序员只具有select功能 而且是针对 view而不是原表 业务逻辑也不需要自己写 有DBA实现
    自己只需要用php来做表现层 一个call pro_curd()或者 select function_name() 
    用储存过程只有一个好处 就是不会出现你那个问题 只要过程建立成功,传一个QQ或者PHONE进去 必然返回一次正确的判断
      

  4.   

    "SELECT * FROM  mg_user WHERE Me_QQ='{$user}' and Me_Password='{$Me_Password}'"