简体   繁体   English

消息“ SQLSTATE [HY093]”的异常“ PDOException”:参数号无效

[英]exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number

This look a lot simple but for some reasons i can not get it to work... I need all the help i can get 这看起来很简单,但由于某些原因,我无法使其正常工作...我需要我所能获得的所有帮助

 function register_user($email, $password,  $gender, $phone_number){
    $this->sql = "insert into user
                  (
                  email_addr, phone_number, password,
                  gender, activation_code, isMobileVerified,
                  last_login_date, unix_sign_up_time, sign_up_date
                  ) VALUES
                  (
                  :email, :phone_number, :password,
                  :gender, :activation_code, :isMoobileVerified,
                  :last_login, :time_unix, NOW()
                  )";
    $this->prepare($this->sql);
    $this->bind(':email', $email);
    $this->bind(':phone_number', $phone_number);
    $this->bind(':password', $password);
    $this->bind(':gender', $gender);
    $this->bind(':activation_code', sha1($password));
    $this->bind(':isMobileVerified', 0);
    $this->bind(':last_login', time());
    $this->bind(':time_unix', time());

    $this->execute();

    return $this->lastInsertedId();
}

when i run this function like this 当我像这样运行此功能时

try{
    echo "<br>" . $i->register_user('myMail@register.com', 'password', 'male', '2348020000007');
}catch (PDOException $e) {
    //todo: logging function or mail to dev goes here
    echo $e ."<br>". $e->getMessage();
}

i get this error 我得到这个错误

exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in C:\\wamp\\www\\ecommerce\\system\\model\\class.ecommerce.php:215 Stack trace: #0 C:\\wamp\\www\\ecommerce\\system\\model\\class.ecommerce.php(215): PDOStatement->bindValue(':isMobileVerifi...', true, 5) #1 C:\\wamp\\www\\ecommerce\\system\\model\\class.ecommerce.php(281): ukorJidechi\\db_handler->bind(':isMobileVerifi...', true) #2 C:\\wamp\\www\\ecommerce\\namespace_test.php(51): ukorJidechi\\ecommerce_user->register_user('myMail@register...', 'password', 'male', '2348020000007') #3 {main} SQLSTATE[HY093]: Invalid parameter number: parameter was not defined 消息“ SQLSTATE [HY093]:无效的参数号:未定义参数”的异常“ PDOException”在C:\\ wamp \\ www \\ ecommerce \\ system \\ model \\ class.ecommerce.php:215堆栈跟踪中:#0 C:\\ wamp \\ www \\ ecommerce \\ system \\ model \\ class.ecommerce.php(215):PDOStatement-> bindValue(':isMobileVerifi ...',true,5)#1 C:\\ wamp \\ www \\ ecommerce \\ system \\ model \\ class.ecommerce.php(281):ukorJidechi \\ db_handler-> bind(':isMobileVerifi ...',true)#2 C:\\ wamp \\ www \\ ecommerce \\ namespace_test.php(51):ukorJidechi \\ ecommerce_user-> register_user('myMail @ register ...','password','male','2348020000007')#3 {main} SQLSTATE [HY093]:无效的参数编号:未定义参数

here is my custom bind method 这是我的自定义绑定方法

function bind($placeholder, $value, $type = null){
    if (is_null($type)) {
        switch (true) {
            case is_int($value):
                $type = \PDO::PARAM_INT;
                break;
            case is_bool($value):
                $type = \PDO::PARAM_BOOL;
                break;
            case is_null($value):
                $type = \PDO::PARAM_NULL;
                break;
            default:
                $type = \PDO::PARAM_STR;
        }
    }
    $this->stmt->bindValue($placeholder, $value, $type);
}

Can someone show me what I am doing wrong? 有人可以告诉我我在做什么错吗? Please. 请。

See this statement here, 在这里查看此声明,

$this->bind(':unix_sign_up_time', time());

And compare the above statement with $this->sql 并将上面的语句与$this->sql

$this->sql = "insert into user
              (
              ...
              :last_login, :time_unix, NOW()
                            ^^^^^^^^^
              )";

So your bind() statement should be, 所以您的bind()语句应该是

$this->bind(':time_unix', time());

Edited: 编辑:

See this line here in $this->sql , $this->sql此处查看此行,

$this->sql = "insert into user
              (
              ...
              :gender, :activation_code, :isMoobileVerified,
                                          ^^^^^^^^^^^^^^^^^^
              ...
              )";

It should be :isMobileVerified 应该是:isMobileVerified

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 消息“ SQLSTATE [HY093]”的“ PDOException”:无效的参数号: - 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: 致命错误:消息中出现“ SQLSTATE [HY093]:无效的参数编号:未定义参数”的未捕获异常“ PDOException” - Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in 消息为&#39;SQLSTATE [HY093]:未捕获的异常&#39;PDOException&#39;:无效的参数号:未定义参数&#39; - Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' 注意:带有消息“ SQLSTATE [HY093]:参数号无效:参数未定义”的异常“ PDOException” - Notice: exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' 消息为“ SQLSTATE [HY093]:参数号无效”的未捕获异常“ PDOException” - Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number' PHP致命错误:消息为&#39;SQLSTATE [HY093]的未捕获异常&#39;PDOException&#39;:无效的参数编号: - PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: PHP PDO SQL错误:带有消息&#39;SQLSTATE [HY093]的未捕获异常&#39;PDOException&#39;:参数号无效 - PHP PDO SQL error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number 致命错误:带有消息&#39;SQLSTATE [HY093]的未捕获异常&#39;PDOException&#39;:参数号无效:没有参数被绑定 - Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: no parameters were bound PHP PDOException:“SQLSTATE[HY093]:参数号无效” - PHP PDOException: "SQLSTATE[HY093]: Invalid parameter number" 致命错误:未捕获的异常 &#39;PDOException&#39; 带有消息 &#39;SQLSTATE[HY093]:参数无效 - Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM