Php PDO语句->执行()用户->用户注册(数组)

Php PDO语句->执行()用户->用户注册(数组),php,Php,我犯了这个错误 致命错误:未捕获的异常“PDOException”带有消息 'SQLSTATE[HY093]:无效参数编号:未定义参数' 在C:\xampp\htdocs\test\lib\user.php中:71堆栈跟踪:0 C:\xampp\htdocs\test\lib\user.php71:PDOStatement->execute1 C:\xampp\htdocs\test\lib\user.php19: 用户->电子邮件检查'jpjadeja24@gmai...' 2 C:\xamp

我犯了这个错误


致命错误:未捕获的异常“PDOException”带有消息 'SQLSTATE[HY093]:无效参数编号:未定义参数' 在C:\xampp\htdocs\test\lib\user.php中:71堆栈跟踪:0 C:\xampp\htdocs\test\lib\user.php71:PDOStatement->execute1 C:\xampp\htdocs\test\lib\user.php19: 用户->电子邮件检查'jpjadeja24@gmai...' 2 C:\xampp\htdocs\test\register.php7:User->userRegistrationArray 3 {main}在第71行的C:\xampp\htdocs\test\lib\user.php中抛出


bindValue调用中使用的参数名称必须与查询中使用的名称匹配

所以

或者,更改查询参数

    $sql = "insert into register 
                    (name,user_name,email_id,password) 
             values (:name, :username, :email, :password)";
    $query = $this->db->pdo->prepare($sql);
    $query->bindValue(':name',$name);
    $query->bindValue(':user_name',$usnm);

    // The FIX
    //$query->bindValue(':email_id',$email);
    $query->bindValue(':email',$email);

    $query->bindValue(':password',$pass);
    $result = $query->execute();
另外,这将是您的下一个问题,一个丢失的位置,您在绑定时犯了相同的错误


我的错误可能是因为为参数指定值时输入错误。 这应该行得通。在第47行修改您的查询

public function emailcheck($email){
    $sql = "select email_id from register WHERE email_id = :email";
    //                                    ^^^^^
    $query = $this->db->pdo->prepare($sql);

    // AND THE SAME FIX REQUIRED HERE

    //$query->bindparam(':email_id', $email);
    $query->bindValue(':email',$email);
    $query->execute();

如果您不想麻烦格式化代码以使其可读**为什么我们要费心去帮助呢?这应该已经在prepare调用中失败了,因为select email_id from register email_id=:email显然不是一个有效的SQL语句,它缺少WHERE关键字。谢谢你,现在在第53行中出现了相同的错误,未捕获的异常“pdo exception”,消息是“SQLSTATE[HY093]:无效参数编号:未在C:\xampp\htdocs\test\lib\user.php中定义参数:53堆栈跟踪:0 C:\xampp\htdocs\test\lib\user.php53:PDOStatement->执行1 C:\xampp\htdocs\test\register.php7:user->userRegistrationArray 2{main}在C:\xampp\htdocs\test\lib\user.php的第53行中抛出见修改后的答案,我错过了那个答案,但是你真的应该能够自己解决这个问题,因为它与前面提到的问题完全相同。我尝试但不工作,发生了相同的错误,所以你需要在第69行将其更改为电子邮件id。但是现在,此代码中出现了错误$sql=插入注册表名、用户名、电子邮件、密码值:name、:username、:email、,:密码$query=$this->db->pdo->prepare$sql$查询->bindValue':name',$name$查询->bindValue':用户名',$usnm$查询->bindValue':email',$email$查询->bindValue':密码',$pass$结果=$query->execute;尝试打印sql错误。打印\u r$query->errorInfo;未捕获异常“PDOException”,消息为“SQLSTATE[HY093]:参数编号无效:未定义参数”打印此错误
    $sql = "insert into register 
                    (name,user_name,email_id,password) 
             values (:name, :username, :email_id, :password)";
    //                                 ^^^^^^^^^

    $query = $this->db->pdo->prepare($sql);
    $query->bindValue(':name',$name);
    $query->bindValue(':user_name',$usnm);
    $query->bindValue(':email_id',$email);
    $query->bindValue(':password',$pass);
    $result = $query->execute();
public function emailcheck($email){
    $sql = "select email_id from register WHERE email_id = :email";
    //                                    ^^^^^
    $query = $this->db->pdo->prepare($sql);

    // AND THE SAME FIX REQUIRED HERE

    //$query->bindparam(':email_id', $email);
    $query->bindValue(':email',$email);
    $query->execute();
$sql = "insert into register (name,user_name,email_id,password) values (:name, :user_name, :email_id, :password)";