Итак, это скрипт, который позволяет сбрасывать информацию пользователя в базу данных с помощью драйвера PDO. Всякий раз, когда я запускаю скрипт с уникальным именем пользователя, он работает, и он сбрасывает информацию. Но если пользователь с тем же именем пользователя пытается зарегистрироваться, он должен выбросить ошибку. Я использую $ stmt-> errorCode() == 23000 для проверки дубликатов в базе данных, но всякий раз, когда я пытаюсь зарегистрировать имя пользователя, которое я уже зарегистрировал, я просто получаю пустой белый экран. Я пропустил скрипт с помощью xDebug, и, похоже, когда я пытаюсь зарегистрироваться с именем пользователя, которое уже находится в базе данных, оно даже не попадает в операторы if/else в нижней части скрипта. Он просто выполняет и бросает пустой белый экран.User Register DB Issue
EDIT: У меня есть поле имени пользователя в БД, установленное в 'unique'.
Видео Xdebug пошаговом: http://screencast.com/t/znZfMgV2
Любые идеи?
// create a salt using the current timestamp
$salt = time();
// encrypt the password and salt
$password = sha1($password.$salt);
// prepare the sql statement
$sql = 'INSERT INTO users (created, username, salt, password) VALUES(now(), :username, :salt, :password)';
$stmt = $conn->prepare($sql);
// bind the parameters
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':salt', $salt, PDO::PARAM_INT);
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
$stmt->execute();
if ($stmt->rowCount() == 1) {
$registerResult = "$username has been registered. You may now log in.";
} elseif ($stmt->errorCode() == 23000) {
$registerResult = "$username is already in use. Please choose another username.";
} else {
$registerResult = 'Sorry, there was a problem with the database';
}
Да, у меня есть установленные в моей функции конфигурации ошибок. С решением, которое вы предоставили, оно действительно работает, но оно вызывает ошибку SQL «SQLSTATE [23000]: нарушение ограничений целостности: 1062 Дублирующая запись« Futanical »для ключевого« имя пользователя » Мне нужно, чтобы проверить дублирование и если есть дубликат дампа, ошибка в переменной $ registerResult. –
Итак, в чем проблема, просто выгрузите его в свою переменную '$ registerResult = $ e-> getMessage();' – meda
Derp. Извините, мозг пердит. Ваше решение отлично работало! Благодаря! –