Вы должны настроить Регистрация ошибок PDO .
Из комментариев;Перефразировано для ясности:
Мой user_id
столбец равен int(11) auto_increment
Ваша проблема в том, что вы пытаетесь вставить значение string
в числовой столбец в MySQL.
user_id
/ id
на языке базы данных обычно является числовым значением, но вы не установили тип значения в SQL, поэтому по умолчанию используется значение string
.
Поскольку ваше значение :id
является числовым значением в PHP, вам необходимо сделать следующее:
$stmt->bindParam(":id", $id, 'i'); // i = integer type.
Настоятельно рекомендуется явно установить значение типа данныхпоставляется каждый раз .
Если данные, передаваемые в PDO, не соответствуют указанному типу значения, транзакция PDO будет аннулирована и не будет завершена.Это мера безопасности.
Например:
$id = 3;
$stmt->bindParam(":id", $id);
Это то же самое, что сказать:
$stmt->bindParam(":id", 3, 's'); // default type value is 's' for string.
Очевидно, что значение 3
не является строкой, поэтому эта транзакция ($stmt
) никогда не выполняется.
Я предполагаю, что это потому, что он рассматривает описание как специальное слово, если это правда, тогда я должен изменить имя в моей базе данных.Мысли?
«описание» не является ни ключевым словом, ни зарезервированным словом в MySQL 5.5 -> 5.7
( в MySQL 8.0.4 DESCRIPTION
является ключевым словом, но является не зарезервированное слово )
Вы можете просмотреть список ключевых слов MySQL и зарезервированных слов .