Почему я не могу использовать execute () для массива? - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь внедрить подтверждение по электронной почте на мой сайт, но я получил ошибку

Неустранимая ошибка: необработанная ошибка: вызов функции-члена execute () на bool in: 56 Трассировка стека: # 0 {main} добавляется в строку 56

Вот мой код:

      $user_activation_code = md5(rand());

  // Nuevo Usuario
  $hashed = password_hash($password,PASSWORD_DEFAULT);
  $insert_query = 'INSERT INTO clientes (full_name,email,user_activation_code,user_email_status,password,permissions,street,numero,interior,city,state,zip_code,country) VALUES ("$name","$email","$user_activation_code",:user_email_status,"$hashed",cliente,"$street","$numero","$interior","$city","$state","$zip_code",Mexico)';
  $statement = $db->prepare($insert_query);
  $statement -> execute(
    array(
      'full_name'            => $_POST['name'],
      'email'                => $_POST['email'],
      'password'             => $hashed,
      'user_activation_code' => $user_activation_code,
      ':user_email_status'    => 'no verificado'
    )
  );
  $result = $statement->fetchAll();

1 Ответ

0 голосов
/ 20 марта 2019

Вам необходимо правильно связать свой массив с запросом.

PDO для использования ассоциативного массива, вам необходимо иметь значения в строке запроса и одинаковые значения в вашем ключе.

$insert_query = 'INSERT INTO clientes (full_name,email,user_activation_code,user_email_status,password,permissions,street,numero,interior,city,state,zip_code,country) VALUES (:full_name,:email,:user_activation_code,:user_email_status,:password,"cliente","$street","$numero","$interior","$city","$state","$zip_code","Mexico")';
array(
  ':full_name'            => $_POST['name'],
  ':email'                => $_POST['email'],
  ':password'             => $hashed,
  ':user_activation_code' => $user_activation_code,
  ':user_email_status'    => 'no verificado'
)

Пожалуйста, также свяжите другие значения, такие как: $ город, $ штат и т. Д.

...