0

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

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 中的注册函数并在 mysql_query 中执行 die 消息,但是在 phpMyAdmin 中检查时插入成功。我究竟做错了什么?非常感谢任何帮助!

4

3 回答 3

3
return mysql_affected_rows($result); 

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

return mysql_affected_rows(); 
于 2012-11-10T16:43:39.613 回答
2

来自http://php.net/mysql_query的几件事

  1. mysql 被“劝阻”,建议的替代方案是 mysqli 或 PDO。
  2. 插入时的 mysql_query 返回一个布尔值

并来自http://php.net/mysql_affected_rows

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

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

于 2012-09-06T22:03:01.000 回答
0

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

于 2017-06-08T16:27:30.397 回答