-2

問題と解説

こんにちはfunction、最初checking if account exists in databaseにその名前を処理するコードを作成しました。次に、その入力された電子メールを使用してデータベースに電子メールが存在する場合。

そうでない場合は、return true + insert data.

しかし、この場合、nothing happens on submitフォームを表示するだけで、データを挿入しません..何が問題なのですか?

function createAccount($name, $password, $email)
{
    global $pdo;

    $check_in = $pdo->prepare("SELECT * FROM users WHERE user_name = :username LIMIT 1");
    $check_in->execute( array(':username' => $name) );

    if (!$check_in->rowCount())
    {
        $check_in = email_exists($email);
        if ($check_in === false)
        {
            $insert_in = $pdo->prepare
            ("
                INSERT INTO 
                users 
                (user_name, user_password, user_email) 
                VALUES 
                (:name, :password, :email)
            ");
            $insert_in->execute( array 
            (
                ':name' => $name,
                ':password' => $password,
                ':email' => $email
            ));

            return true;
        }
        else
        {
            return 'exists';
        }
    }
    else
    {
        return 'user_in_use';
    }   
}

function email_exists($email)
{
    global $pdo;

    $check = $pdo->prepare("SELECT * FROM users WHERE user_email = :email LIMIT 1");
    $check->execute( array(':email' => $email) );
    if ($check->rowCount())
    {
        return true;
    }
    else
    {
        return false;
    }
}

これは私がレジスタを構成する方法です:

# Creating shortcuts
if (isset($_POST['username']) && isset($_POST['password']) && isset($_POST['email']))
{   
    $name = $_POST['username'];
    $password = $_POST['password'];
    $email = $_POST['email'];
}

# Creating errors array

$errors = array();

if (isset($_POST['submit']))
{
    $check_in = createAccount($name, $password, $email);

    if ($check_in === true)
    {
        echo 'Created account sucessfully!';
    }
    else if ($check_in == 'already_in_use')
    {
        echo 'Could not create account because name already in use..';
    } 
    else if($check_in == 'exists')
    {
        echo 'Email already in use..';
    }
}

質問:

このコードの何が問題なのですか?どうすれば修正できますか? エラーはまったくありません。データベースにデータを挿入しません。

はい、ログインが完全に機能するため、PDO 接続とステートメントは正しいです。どうもありがとう!

編集!

    if ($check_in === true)
    {
        echo 'Created account sucessfully!';
    }
    else if ($check_in == 'already_in_use')
    {
        echo 'Could not create account because name already in use..';
    } 
    else if($check_in == 'exists')
    {
        echo 'Email already in use..';
    } else { 
    echo 'Error is there...'; 
    }

送信時に「エラーが発生しました...」というメッセージが表示されます。

4

1 に答える 1

-1

私は自分自身を平手打ちしたいだけです!..... 問題は: フィールドが INT として設定されていたため、int 以外のものを格納できませんでした...

于 2013-04-17T20:32:05.727 に答える