php sql语句,同一页面,不能使用2条sql语句嘛?

xcasp 2010-07-26 09:58:28
这个问题困扰了我很久,就是不知道怎么解决,以前在asp当中也没有出现这样的问题啊!
难道php不可以在同一个页面使用2条sql语句?
我就截这段登陆源码吧!

if ($dl ==0){
$sql = mysql_query("SELECT * FROM mg_user WHERE Me_Mobile='".$user."' && id='".$user."' && Me_Password='".$Me_Password."'",$conn);
$rs = mysql_fetch_array($sql);
if ($rs){
}else{
$Prompt= '手机号/UID或密码错误!';
}
}elseif ($dl ==1){
$sql = mysql_query("SELECT * FROM mg_user WHERE Me_QQ='".$user."' && Me_Password='".$Me_Password."'",$conn);
$rs = mysql_fetch_array($sql);
if ($rs){
}else{
$Prompt= 'QQ号码或密码错误,请重新输入!!';
}


我这个是多登陆方式的源码!
如果我使用,手机号或者UID的话,进行登陆没有出错!
如果使用QQ号码登陆,就会在顶部提示:

警告:mysql_fetch_array():提供的参数不是一个有效的MySQL结果资源在E:\ Apmserv5.2.6 \ APMServ5.2.6 \的www \ htdocs中上线59 \ login.php

意思就是提示查询QQ号码的这段“$rs = mysql_fetch_array($sql);” 有错误!
怎么会这样呢?
而且很多页面使用多个sql语句,都会提示该类的错误!
要是我把查询QQ号码这段“$rs = mysql_fetch_array($sql);”给删除了!
就没事了,怎么会这样呢?
莫非我的php版本有问题?我是用“APMServ”集成的php环境!
而且在我的笔记本里另外一个php集成环境,就不会在这个登陆提示错误!
不过还是有些文件一样会这样!
麻烦高手给个解答,谢谢..


还有补充下,我并没有QQ号码数据库,只是我让用户在个人资料,设置QQ号码登陆时,邮件功能就会自动发生成URL让用户点击后自动激活的,密码还是用站内密码!

...全文
270 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dleno 2010-07-27
  • 打赏
  • 举报
回复
"SELECT * FROM mg_user WHERE Me_QQ='{$user}' and Me_Password='{$Me_Password}'"
LuciferStar 2010-07-27
  • 打赏
  • 举报
回复
怕是if前就有问题了。
  • 打赏
  • 举报
回复

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进去 必然返回一次正确的判断
amani11 2010-07-26
  • 打赏
  • 举报
回复


$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;//看看结果

gumwzg 2010-07-26
  • 打赏
  • 举报
回复
判断一下 $sql 是否存在,
print_r();一下吧

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧