Все еще пытаюсь поднять голову вокруг pdo.
У меня есть оператор insert, который выполняется с pdo. Вставка отлично работает, однако, если есть ошибка, которую я хотел бы показать пользователю.
У меня есть блок catch try try.
try{ $insertuser = $db->prepare('INSERT INTO `she_she`.`Persons` (`idnumber`,`addedby`,`firstname`, `middlename`, `surname`, `fullname`, `gender`, `birthdate`, `homelanguage`, `department`, `employeetype`, `employeestatus`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)'); $insertuser->execute(array($idnumber,$user,$firstname, $middlename, $surname, $fullname, $gender, $birthdate, $language, $department, $employmenttype, $personstatus)); } catch(PDOException $exception){ return $exception; }
Если запрос завершается с ошибкой или позволяет указать дубликат IDNumber, я хочу, чтобы это отображалось пользователю.
Если я просто попробую echo переменную $ exception, она не работает.
Я хочу вернуть mysql-ошибку пользователю.
Любые советы, как всегда.
Спасибо, Райан
ОБНОВИТЬ
новый код в соответствии с предлагаемыми ответами:
try{ $insertuser = $db->prepare('INSERT INTO `she_she`.`Persons` (`idnumber`,`addedby`,`firstname`, `middlename`, `surname`, `fullname`, `gender`, `birthdate`, `homelanguage`, `department`, `employeetype`, `employeestatus`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)'); $insertuser->execute(array($idnumber,$user,$firstname, $middlename, $surname, $fullname, $gender, $birthdate, $language, $department, $employmenttype, $personstatus)); } catch(PDOException $exception){ return $exception->getMessage(); } echo "exception: ".$exception;
По умолчанию PDO не находится в состоянии, в котором будут отображаться ошибки. вам необходимо предоставить следующее в вашем соединении с БД
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Здесь можно увидеть больше информации
Вы должны использовать это:
return $exception->getMessage();
См. Страницу документации по классу исключений: