-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!");
        }
    }

访问这个静态

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

首先,我使用用户名和电子邮件来验证它们是否存在一行,然后我添加一个 var 来保存一个获取的数组。

然后我检查它的rowCount,然后插入数据。

问题:

我收到此错误

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

我不太确定我为什么会得到这个,我从来没有遇到过这个错误,我读过它但不明白我的代码中会出现什么问题。

问题:

差不多,为什么这个错误意味着什么,是什么原因造成的?

4

1 回答 1

2

问题是在您的插入查询中,您引用了一个 maned 参数:code,而当您执行准备好的语句时,您使用了一个不正确的参数引用 generated_code(根本没有冒号)。更改该参数引用:code,它应该可以工作。

错误消息的含义几乎与它所说的完全一样,即generated_code未定义参数。

于 2013-05-01T19:23:58.217 回答