не показывать предупреждения клиенту при использовании PDO - PullRequest
0 голосов
/ 11 февраля 2020

Я заметил, что PDO отображает предупреждения для конечного клиента. Например, если задано недопустимое значение перечисления, отображается предупреждение:

SQLSTATE [01000]: Предупреждение: 1265 Данные усечены для столбца 'тип' в строке 1

У конечного пользователя нет причин видеть это. Я бы предпочел просто отобразить 500 код состояния, хотя это ошибка пользователя, поэтому 400 будет более подходящим.

Это мои текущие параметры pdo:

public static array $options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

и я используя

error_reporting(E_ALL);
ini_set('display_errors', 0);

вверху скрипта.

Есть идеи, почему это происходит?

Минимальный код с преднамеренно неправильными значениями, когда display_errors установлен в 1 :

$stmt = $this->pdo->prepare("INSERT INTO MYTABLE (`type`) VALUES (?)");
$stmt->execute([$json->type]);

Полное сообщение без трассировки стека

SQLSTATE [01000]: Предупреждение: 1265 Данные усечены для столбца «тип» в строке 1 Неустранимая ошибка : Uncaught PDOException: SQLSTATE [01000]: Предупреждение: 1265 Данные усечены для столбца «тип» в строке 1 в пути / api / v1 / index. php: 35

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...