【问题标题】:mysql_num_rows() giving a Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\check_user.php on localhost [duplicate]mysql_num_rows() 给出警告:mysql_num_rows() 期望参数 1 是资源,在本地主机上的 C:\xampp\htdocs\check_user.php 中给出的布尔值 [重复]
【发布时间】:2013-11-30 09:07:26
【问题描述】:
     <?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);
          }
        }
     ?>

我正在使用 Xampp 开发 Localhost。 上面的代码没有检查所需的最里面的“if”条件,我收到一个警告,它输出“无效”,这是最里面的“else”部分,即使我输入了数据库中存在的正确电子邮件和密码。 警告说:警告:mysql_num_rows() 期望参数 1 是资源,布尔值在第 40 行的 C:\xampp\htdocs\check_user.php 中给出 上面的代码在 check_user.php 页面中,我有一个不同的登录页面 (Login_page.php),它有一个带有方法 =“post”和操作 =“user_check.php”的 html 表单。 请帮忙...

【问题讨论】:

  • $sql_query_run = mysql_query($query,$connection);
  • mysql_* 函数不再维护,不应在任何新代码库中使用。它正在逐步淘汰,以支持更新的 API。相反,您应该将prepared statementsPDOMySQLi 一起使用。
  • 回显您的 $query 并在 phpmyadmin 中运行。也 FROM 'login_details' 应该是 FROM login_details 即不要放单引号
  • 您是否尝试将 $sql_query_run = mysql_query($query); 更改为 $sql_query_run = mysql_query($query,$con); 其中 $ con是你的link_identifier
  • 我用过这个,现在它工作了---->$sql_query_run = mysql_query($query) or die (mysql_error());

标签: php mysql session


【解决方案1】:

您收到的错误是因为您的查询未执行。

table name 中不会有单引号,即 FROM 'login_details' 是错误的。

试试

$email=mysql_real_escape_string($email);
$password=mysql_real_escape_string($password);
$query = "SELECT * FROM login_details WHERE email ='$email' AND password ='$password'";

也不要使用 mysql_*,因为它们已被弃用。请改用 PDO。

【讨论】:

【解决方案2】:

mysql_query 的手册告诉你你需要知道的一切:

警告

此扩展自 PHP 5.5.0 起已弃用,将来将被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL:选择 API 指南和相关常见问题解答以了解更多信息。

中止您的代码并改用 PDO。

失败:首先确保您已成功打开与 MySQL 服务器的连接。然后,确保mysql_query 执行成功。

$sql_query_run = mysql_query($query) or die (mysql_error());

【讨论】:

  • 这没有提供对原始问题的答案。
  • 在当今世界,安全应该是主要关注点。所以从我这边+1。
  • 我使用了您提供的第二行及其工作...与 ..or die(mysql_error());
猜你喜欢
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 2012-12-20
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多