-1

こんにちは、mysql に 6 つのフィールドを持つテーブルがあります

ID, mobileNumber, firstName, lastName, email, password , rollID

ID は自動インクリメントで、php を使用して挿入したい

phpコード

public function run($firstName, $lastName, $mobileNumber, $email, $password, $rePassword) {
        if (!$this->db->isExistedMobile($mobileNumber)) {
            try {
               $query = "INSERT INTO user (firstName, lastName, mobileNumber, email, password, rollID)
                VALUES (:firstName, :lastName, :mobileNumber, :email, :password, 'rollID')";
                $sth = $this->db->prepare($query);
                $sth->execute(array(
                    ':firstName' => $firstName,
                    ':lastName' => $lastName,
                    ':mobileNumber' => $mobileNumber,
                    ':email' => $email,
                    ':password' => $password,
                    ':rollID' => "roma"
                ));
                header("location: " . URL . "index");
            } catch (PDOException $e) {
                die($e->getMessage());
                exit;
            }
        } else {
            include 'controlers/Error.php';
            $error = new Error();
            $error->index("you enterd a used mobile number");
        }
    }

私はこの例外を持っています

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

関数 isExistedMobile は常に false を返すので、心配する必要はありません。どこが間違っているのかわかりません。構文にありますか? またはロールID cosで静的にしますか?助けてくれてありがとう:)

4

1 に答える 1

2

問題 (元のコード) は、パラメーター配列に末尾のコンマがあり、そのnull中に追加の要素が作成されたことです。

当初の意図どおりに ( のリテラル値を使用して) そのバージョンに戻すことをお勧めrollIDしますが、 の後の末尾のコンマを必ず削除してください$password

public function run($firstName, $lastName, $mobileNumber, $email, $password, $rePassword) {
        if (!$this->db->isExistedMobile($mobileNumber)) {
            $query = "INSERT INTO user (firstName, lastName, mobileNumber, email, password, rollID)
                VALUES (:firstName, :lastName, :mobileNumber, :email, :password, 'ddd')";
            $sth = $this->db->prepare($query);
            $sth->execute(array(
                ':firstName' => $firstName,
                ':lastName' => $lastName,
                ':mobileNumber' => $mobileNumber,
                ':email' => $email,
                ':password' => $password  // , removed from here
            ));
            header("location: " . URL . "index");
        } else {
            include 'controlers/Error.php';
            $error = new Error();
            $error->index("you enterd a used mobile number");
        }
    }
于 2012-05-12T16:23:28.530 に答える