<?php 
   function sqlesc($x) {
   return "'".mysql_real_escape_string($x)."'";
    }
$coon=mysql_connect("localhost","root","root");
 if(!$coon)
{
die('数据库连接失败!'.mysql_error());
}
 mysql_select_db("db_rita",$coon);
 echo "运行到这里了";
 
while ($row = mysql_fetch_array($mysql))
{$name=$row['name'];
$password=$row['password'];}
if($_POST['name']==$name && $_POST['password']==$password)
 {
  echo "登录成功!";
 }  
 else 
 {
  echo "登录失败!不存在此用户名!";
 }
 mysql_close($coon);
?>本人PHP新手,请问上面的代码为什么不能验证。SQL没问题,在数据库里能运行出想要的结果。

解决方案 »

  1.   

    while ($row = mysql_fetch_array($mysql))
    {$name=$row['name'];
    $password=$row['password'];}
    你在这里后面验证,取的是数据库最后一条,当然验证有问题了。
      

  2.   

    while ($row = mysql_fetch_array($mysql))
    {$name=$row['name'];
    $password=$row['password'];}这里怎么改。。不是取的最后一条,是全取出来了.
      

  3.   

    $mysql = mysql_query("SELECT * FROM table WHERE name=".$_POST['name']." AND password=".$_POST['password']);
    if($row = mysql_fetch_array($mysql))
    {
        echo "登录成功!";
    }
    else 
     {
      echo "登录失败!用户名或密码错误!";
     }
      

  4.   

    $mysql = mysql_query("SELECT * FROM table WHERE name='".$_POST['name']."' AND password='".$_POST['password']."'");
    不好意思少了分号
      

  5.   

    你是没把你的代码发全呢?还是压根就少了数据库查询获得结果这步?
    只见你有选择了连接数据库名称之后没有查询,直接fetch_array。如果没发全,步骤都有,那么请参考3楼!
      

  6.   

    是的不好意思,我掉了select 语句。<?php 
       function sqlesc($x) {
       return "'".mysql_real_escape_string($x)."'";
        }
    $coon=mysql_connect("localhost","root","root");
     if(!$coon)
    {
    die('数据库连接失败!'.mysql_error());
    }
     mysql_select_db("db_rita",$coon);
     
    echo "运行到这里了"."<br/>";
     
    $mysql = mysql_query("SELECT name,password FROM user WHERE name='".$_POST['name']."' AND password='".$_POST['password']."'");echo $mysql; //打印$mysql结果if($row = mysql_fetch_array($mysql))
    {
      echo "登录成功!";
    }
    else  
     {
      echo "登录失败!用户名或密码错误!";
     } mysql_close($coon);
    ?>得到的结果是这样的:“运行到这里了
    Resource id #3登录失败!用户名或密码错误!”(Resource id #3)是什么意思?我用 "echo $mysql; //打印$mysql结果"得到的.我用的是数据库里正确的“name”和"password".
      

  7.   

    echo $mysql; 是一个资源标识符 输出没用的换成下面的
    $row = mysql_fetch_array($mysql);
    if(is_array($row))
    {
      echo "登录成功!";
    }
    else   
     {
      echo "登录失败!用户名或密码错误!";
     }