Фатальная ошибка: неперехваченное исключение ‘PDOException’ с сообщением ‘SQLSTATE[HY093]: недопустимый параметр

#php #sql #pdo #insert

#php #sql #pdo #вставить

Вопрос:

У меня в таблице (q) 30 столбцов, я написал это в правильном коде, но я не знаю, где это неправильно.

Здесь я проверяю ошибки:

    $formErrors = array();
         if(empty($fullname)){$formErrors[] =  '<div class="alert alert-danger" > هناك خطأ ما<strong> الاسم</strong></div>';  } 
             if(empty($email)){$formErrors[] =  '<div class="alert alert-danger" >هناك خطأ ما <strong>الايميل</strong></div>';  } 

          //loop errors 
            foreach($formErrors as $error){redirecthome("$error");}

            // check if not errors procces update
            if(empty($formErrors)){
  

здесь неверный код sql..

    $stmt = $con->prepare("INSERT INTO `u926512753_u`.`q` (`username`, `email`, `skill`, `info`, `q1`, `q2`, `q3`, `q4`, `q5`, `q6`, `q7`, `q8`, `q9`, `q10`, `q11`, `q12`, `q13`, `q14`, `q15`, `q16`, `q17`, `q18`, `q19`, `q20`, `q21`, `q22`, `q23`, `q24`, `q25`, `q26`) VALUES (:username, :email, :skill, :info, :q1, :q2, :q3, :q4, :q5, :q6, :q7, :q8, :q9, :q10, :q11, :q12, :q13, :q14, :q15, :q16, :q17, :q18, :q19, :q20, :q21, :q22, :q23, :q24, :q25, ':q26'); ");






                $stmt->execute(array(':username'  => $fullname, ':email'  => $email, ':skill'  => $skill, ':info'  => $info, ':q1'  => $q1, ':q2'  => $q2, ':q3'  => $q3, ':q4'  => $q4, ':q5'  => $q5, ':q6'  => $q6, ':q7'  => $q7, ':q8'  => $q8, ':q9'  => $q9, ':q10'  => $q10, ':q11'  => $q11, ':q12'  => $q12, ':q13'  => $q13, ':q14'  => $q14, ':q15'  => $q15, ':q16'  => $q16, ':q17'  => $q17, ':q18'  => $q18, ':q19'  => $q19, ':q20'  => $q20, ':q21'  => $q21, ':q22'  => $q22, ':q23'  => $q23, ':q24'  => $q24, ':q25'  => $q25, ':q26'  => $q26  ));
  

Комментарии:

1. удалите первую кавычку из ‘: q26’ .

2. это работает .. большое спасибо

Ответ №1:

Как сказано в комментарии выше. Имеется синтаксическая ошибка из-за кавычки, помещенной в VALUES часть.

:q25, ':q26'); "); должно стать :q25, :q26'); "); .