<?
session_start();
require "connect.inc.php";
if($_GET["action"]=="login"){
$UserName=$_POST["UserName"]; //从表单获取用户名
$Password=md5($_POST["Password"]); //从表单获取密码
$authority=$_POST["authority"]; //从表单获取单选框值
//若单选项值为admin,即管理员身份
if($authority=="admin"){
//sql命令
$sql="select * from admin_login where UserName='{$UserName}' and Password='{$Password}'";
$result=mysql_query($sql);
//尝试输出$result,结果返回Resource id #4,是出错吗?
echo $result;
if(mysql_fetch_array($result)>0){
$row=mysql_fetch_assoc($result);
$_SESSION["UserName"]=$UserName;
$_SESSION["islogin"]=1;
header("Location:index.php");
}
else{
echo '<font color=red size=14px>用户名或密码错误</font>';
}
?>用以上代码处理登录时总是报错,求大神指点!!急!!
你的代码的问题在于判断结果集是否为空的方法有误,因为如果查询返回了数据,调用mysql_fetch_array()方法后,指针就移动的(每次调用返回当前指针指向的记录,然后指针指向下一条记录)。判断是否为空集的方法是使用mysql_num_rows():
//if(mysql_fetch_array($result)>0){
if (mysql_num_rows($result) > 0) {
...
http://www.php.net/manual/zh/language.types.intro.php
http://www.php.net/manual/zh/book.mysql.php
根据你的提示,我修改了一下代码:
<?
session_start();
//require "connect.inc.php";
$mysqli=new mysqli("localhost","root","111111","uems");
if(mysqli_connect_errno()){
printf("失败:%s<br>",mysqli_connect_error());
exit;
}
if($_GET["action"]=="login"){
$UserName=$_POST["UserName"]; //从表单获取用户名
$Password=md5($_POST["Password"]); //从表单获取密码
$authority=$_POST["authority"]; //从表单获取单选框值
if($authority=="admin"){
$sql="select * from admin_login where UserName='{$UserName}' and Pwd='{$Password}'";
$result=$mysqli->query($sql);
echo $result->num_rows;
if($result->num_rows>0){
$row=mysql_fetch_assoc($result);
$_SESSION["UserName"]=$UserName;
$_SESSION["islogin"]=1;
header("Location:index.php");
}
else{
echo '<font color=red size=14px>用户名或密码错误</font>';
}
}else if($authority=="tch"){ }else{ } }
?>
这次使用mysqli_result类来尝试执行,可echo $result->num_rows;这条就只输出0。导致代码不向下执行,求解。
不变颜色?那是你的文本编辑器的问题。语法上没问题
mysqli有没有起作用你得看你的phpinfo.
而且看你的代码似乎没有提示相关错误那就是起作用咯.