-1

私はこの機能を持っています:

    private function sendVerification($username, $email)
    {
        global $pdo;

        $this->check = $pdo->prepare("SELECT * FROM users where user_name = :username AND user_email = :email");
        $this->check->execute(array(
        ":username" => $username,
        ":email" => $email
        ));

        if ($this->check->rowCount())
        {
            $this->get = $this->check->fetch(PDO::FETCH_ASSOC);

            $this->insert = $pdo->prepare
            ("
            INSERT INTO account_verification 
            (user_id, generated_code, date, time) 
            VALUES
            (:id, :code, CUTDATE(), CURTIME())
            ");

            $this->insert->execute(array(
            ":id" => $this->get['user_id'],
            "generated_code" => Users::generateCode($email)
            ));
        }
        else
        {
            throw new exception ("An error has occured!");
        }
    }

このstaticへのアクセス:

    public static function generateCode($salt)
    {
        return substr(hash('sha512', $salt), 0, 15);
    }

最初に、ユーザー名と電子メールを使用して行があることを検証します。次に、取得した配列を保持する変数を追加します。

そして、rowCount かどうかを確認してから、データを挿入しています。

問題:

このエラーが発生しています

SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

なぜこれが発生するのかよくわかりません。このエラーを経験したことはありません。それについて読んだことはありますが、コードの何が問題になるのかわかりませんでした。

質問:

そのエラーが意味するのはなぜですか?また、何が原因なのですか?

4

1 に答える 1

2

問題は、挿入クエリで の管理されたパラメーターを参照し:code、準備されたステートメントを実行するときに、不適切なパラメーター参照を使用することです generated_code(コロンはまったくありません)。そのパラメーター参照をに変更する:codeと、機能するはずです。

generated_codeエラーメッセージは、パラメーターが定義されていないことをほぼ正確に意味します。

于 2013-05-01T19:23:58.217 に答える