0

この問題は私を困惑させました。phpmyadmin でデータベースをチェックすると、クエリがデータベースに正常に挿入されますが、このエラーが発生します。したがって、クエリが通過し、false ではないことはわかっています。私がやろうとしているのは、ユーザーを登録することです。結果が返された場合は、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 でチェックすると挿入は成功します。私は何を間違っていますか?どんな助けでも大歓迎です!!

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から

期待しているリソースは DB リンクであり、クエリ結果ではありません。データベースへの接続が 1 つしかない場合、パラメーターはオプションです。

さらに、入力エスケープを追加して、SQL インジェクションに対処することもできます。

于 2012-09-06T22:03:01.000 に答える