获取mysql_affected_rows()需要参数1为资源,给定布尔值-但查询成功插入数据库-给出了什么


Getting mysql_affected_rows() expects parameter 1 to be resource, boolean given - Yet query inserts into database succesfully - What gives?

这个问题把我难住了。即使当我在phpmyadmin中检查数据库时,查询成功地插入到数据库中,我也会收到这个错误。所以我知道这个查询是通过的,并且不是假的。我想做的是注册一个用户,如果返回了一个结果,则返回要检查的true或false,即如果结果存在,则继续。我班上的代码;

class registerUser {
    function register($email,$password) {
        $query = "insert into users(email,password) values('".$email."','".$password."')";
        $result = mysql_query($query) or die("Could not enter the user into the database".mysql_error());
        return mysql_affected_rows($result); 
    }
    function checkPasswords($password1,$password2) {
        if($password1 == $password2) {
            return true;
        }
        else {
            return false;
        }
    }
}

使用类的文件:

include('../data/connection.php');
include('../data/registerUser.php');
$connect = new connection();
$connect->connect($con, $db);
$register = new registerUser();
$checkPass = $register->checkPasswords($_POST['regpass'],$_POST['confirm']);
if($checkPass) {
    $reg = $register->register($_POST['regemail'],$_POST['regpass']);
        if($reg) {
            session_start();
            $_SESSION['id'] = $_POST['email'];
            $connect->close($con);
            header("Location:dashboard.php");    
        } else  {
           // Failure - message
            echo "Registration not successful, contact Administrator";
        }   
} else {
    echo "Passwords do not match";    
}

它似乎从未通过registerUser中的register函数,并在mysql_query中执行die消息,但在phpMyAdmin中检查时插入是成功的。我做错了什么?非常感谢您的帮助!!

return mysql_affected_rows($result); 

要修复它,请删除参数$result:

return mysql_affected_rows(); 

http://php.net/mysql_query

  1. mysql"不受欢迎",建议使用mysqli或PDO
  2. 插入时的mysql_query返回布尔值

从http://php.net/mysql_affected_rows

它所期望的资源是DB链接,而不是查询结果。如果只有一个到数据库的连接,则该参数是可选的。

此外,您可能希望添加输入转义来处理sql注入。

尝试传递连接变量,如mysqli_affected_rows($conn);这里$conn是我的连接变量