$stmt -> execute() возвращает false

Я пытался отладить эту проблему почти 4 часа, но безуспешно. Никаких сообщений об ошибках, $stmt -> execute() дает false по неизвестной мне причине.

register.php

<?php

session_start();

if( isset($_SESSION['id'])){
  header("Location: index.php");
}

require 'database.php';

$message = '';

if(!empty($_POST['user']) && !empty($_POST['password'])):

    $pass = $_POST['password'];
    $user = $_POST['user'];

    $sql = "Insert into user (username, password) values (:user, :password)";
    $stmt = $conn->prepare($sql);

    $stmt->bindValue(':user', $_POST['user']);
    $stmt->bindValue(':password', password_hash($_POST['password'], PASSWORD_BCRYPT));

    //var_dump($_POST['password']);
    //var_dump($_POST['user']);

    if($stmt -> execute()):
      $message = 'Successfully created new user';
    else:
      $message = 'Sorry there must have been an issue creating your account';
    endif;


endif;

?>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Register Below</title>
  </head>
  <body>

    <?php if(!empty($message)): ?>
      <p><?= $message ?></p>
    <?php endif; ?>

    <h1>Register</h1>
    <form class="" action="register.php" method="post">

      <input type="text" placeholder="Username" name="user" id="user">
      <input type="password" placeholder="and password" name="password" id="password">
      <input type="password" placeholder="confirm password" name="confirm_password">

      <button type="submit" name="button">Register</button>
    </form>
    <a href="./index.php">home</a>
  </body>
</html>

база данных.php

<?php

  $server = 'localhost';
  $username ='master';
  $password ='master';
  $database = 'quiz';

    try{
        $conn = new PDO("mysql:host=$server;dbname=$database;" , $username, $password);
    } catch(PDOException $e){
        die ("Connection failed" . $e->getMessage());
    }

?>

Я знаю, что игнорирую пароль подтверждения, но я хочу сначала убедиться, что могу вставить его в базу данных.


person Silvio Li    schedule 23.07.2016    source источник


Ответы (1)


Решение: длина моего пароля в моей базе данных была 15... хешированный пароль >> 15 символов. Изменил длину на 255 и все хорошо. Надеюсь, это будет полезно для кого-то еще.

person Silvio Li    schedule 23.07.2016
comment
о, это отстой. Рад, что ты нашел это, хотя - person BeetleJuice; 23.07.2016