0

ユーザー名、パスワード、およびその他の変数は既に保存されていますが、次の行に「無効なパラメーター番号: バインドされた変数の数がトークンの数と一致しません」というエラーが表示され続けます。

$database->query(
    'INSERT INTO users_inactive(verCode, username, password, email, date, type) 
    VALUES (:vercode, :username, :password, :email, :date, :type)', 
    array(
        ':vercode' => $verCode, 
        ':username' => $username, 
        ':password' => $password, 
        ':email' => $email, 
        ':date' => $date, 
        ':type'=>'customer')
);

何か問題がありますか?user_inactiveこれらの各列がテーブルで使用できることを確認しました。

これは $database ラッパー関数です:

    public function query($query, $bind = null, $fetch = 'FETCH_ASSOC') {
    /* Prepare the query statement */
    $this->statement = $this->pdo->prepare($query);
    /* Bind each value supplied from $bind */
    if($bind != null) {
        foreach($bind as $select => $value) {
            /* For each type of value give the appropriate param */
            if(is_int($value)) {
                $param = PDO::PARAM_INT; 
            } elseif(is_bool($value)) {
                $param = PDO::PARAM_BOOL;
            } elseif(is_null($value)) {
                $param = PDO::PARAM_NULL;
            } elseif(is_string($value)) {
                $param = PDO::PARAM_STR;
            } else {
                $param = FALSE;
            }
            /* Bid value */
            if($param) {
                $this->statement->bindValue($select, $value, $param);
            }
        }
    }
    /* Execute Query & check for any errors */
    if(!$this->statement->execute()){
        $result = array(
            1 => 'false',
            2 => '<b>[DATABASE] Error - Query:</b> There was an error in sql syntax',
        );
        return $result;
    }
    /* Return all content */
    if($fetch == 'FETCH_ASSOC') {
        $result = $this->statement->fetch(PDO::FETCH_ASSOC);
    } elseif($fetch == 'FETCH_BOTH') {
        $result = $this->statement->fetch(PDO::FETCH_BOTH);
    } elseif($fetch == 'FETCH_LAZY') {
        $result = $this->statement->fetch(PDO::FETCH_LAZY);
    } elseif($fetch == 'FETCH_OBJ') {
        $result = $this->statement->fetch(PDO::FETCH_OBJ);
    } elseif($fetch == 'fetchAll') {
        $result = $this->statement->fetchAll();
    }
    return $result;
}
  }

Tutis Login から取得。

4

3 に答える 3

0

いくつかの手がかりです。おそらくいくつかのコロンが欠けています。ここでチェックアウト

バインドされた変数のPHP Mysql PDO数がトークンの数と一致しません

または、おそらく、コロンで大文字と小文字が区別されることがあります

于 2013-04-28T15:46:14.847 に答える
-1

これを試してみてください:

<?php
$sql = $database->prepare(
'INSERT INTO users_inactive(verCode, username, password, email, date, type) 
VALUES (:vercode, :username, :password, :email, :date, :type)');
$sql->execute(array(
    'vercode' => $verCode, 
    'username' => $username, 
    'password' => $password, 
    'email' => $email, 
    'date' => $date, 
    'type'=>'customer')
);
于 2013-04-28T15:48:32.733 に答える