mysql_num_rows()发出警告:mysql_num_rows()希望参数1是资源,在localhost上的C:\xampp\htdocs\check_user.php中给出布尔值

mysql_num_rows()发出警告:mysql_num_rows()希望参数1是资源,在localhost上的C:\xampp\htdocs\check_user.php中给出布尔值,php,mysql,session,Php,Mysql,Session,我正在使用Xampp处理本地主机。 上面的代码没有检查所需的最内层“如果”条件,我得到一个警告,它输出“无效”,这是最内层的“其他”部分,即使我输入了数据库中存在的正确电子邮件和密码。 警告显示:警告:mysql_num_rows()希望参数1是resource,布尔值在第40行的C:\xampp\htdocs\check_user.php中给出 上面的代码在check_user.php页面中,我有一个不同的登录页面(login_page.php),它有一个带有method=“post”和act

我正在使用Xampp处理本地主机。 上面的代码没有检查所需的最内层“如果”条件,我得到一个警告,它输出“无效”,这是最内层的“其他”部分,即使我输入了数据库中存在的正确电子邮件和密码。 警告显示:警告:mysql_num_rows()希望参数1是resource,布尔值在第40行的C:\xampp\htdocs\check_user.php中给出 上面的代码在check_user.php页面中,我有一个不同的登录页面(login_page.php),它有一个带有method=“post”和action=“user_check.php”的html表单。 请帮助……

的手册告诉您需要了解的一切:

警告 从PHP5.5.0开始,此扩展已被弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。有关更多信息,请参见MySQL:选择API指南和相关常见问题解答

中止代码并改用PDO

失败:首先,确保您已成功打开到MySQL服务器的连接。然后,确保
mysql\u query
成功执行

     <?php
        session_start();
        include('config.inc'); //for selecting database and connecting to phpmyadmin
        $redirect_page = "Login_page.php";
        if(isset($_POST['email']) && isset($_POST['password'])){
           $email = $_POST['email'];
           $password =$_POST['password'];
           //$_SESSION['email'] = $email;
           //$_SESSION['password'] = $password; 
          if((!empty($email)) && (!empty($password))){
                $query = "SELECT * FROM 'login_details' WHERE (email ='".mysql_real_escape_string($email)."') AND (password ='".mysql_real_escape_string($password)."')";
                $sql_query_run = mysql_query($query);
                if(mysql_num_rows($sql_query_run) == 1){
                  echo "<div>login Success</div>";
                }
                else{
                  echo "<div>Invalid</div>";
                }
          }
          else{  
            header ('Location:'.$redirect_page);
          }
        }
     ?>

由于查询未执行而导致的错误

表名中不会有单引号,即“login\u details”是错误的

试一试


也不要使用mysql,因为它们已被删除。请改用PDO。

$sql\u query\u run=mysql\u query($query,$connection);
mysql.*
函数不再维护,不应在任何新的代码库中使用。它正逐渐被淘汰,取而代之的是更新的API。相反,您应该与或一起使用。回显您的$query并在phpmyadmin中运行。同样,来自“login\u details”的应该是来自
login\u details
的,即不要放单引号。您是否尝试更改$sql\u query\u run=mysql\u query($query);to$sql\u query\u run=mysql\u query($query,$con);其中$con是您的链接\u标识符我使用了它,现在它正在工作-->$sql\u query\u run=mysql\u query($query)或die(mysql\u error());这并不能回答最初提出的问题。正如在今天,世界安全应该是主要问题。我这边的so+1。我使用了您提供的第二行,它的工作方式是…或死(mysql_error());引用部分是正确的:vs try in phpmyadmin,它给出了错误。OP在MYSQL中执行environment@ta.speot.is在这里试试其他的否决理由?@RishabhRaj我的意思是我使用了你的代码和“ta.speot.is”代码,即$sql\u query\u run=mysql\u query($query)或die(mysql\u error());而且效果很好,谢谢。。!!
$sql_query_run = mysql_query($query) or die (mysql_error());
$email=mysql_real_escape_string($email);
$password=mysql_real_escape_string($password);
$query = "SELECT * FROM login_details WHERE email ='$email' AND password ='$password'";