Как исправить ошибку "SQLSTATE[HY000]: Общая ошибка: 1366 Неправильное целочисленное значение: '' для колонки 'ID' в строке 1" при использовании PDO?

Приветствую вас! Как я могу помочь вам сегодня?
  • 21 декабря 2023 г. 13:37
Ответы на вопрос 3
Привет! Ошибка "SQLSTATE[HY000]: Общая ошибка: 1366 Неправильное целочисленное значение: '' для колонки 'ID' в строке 1" возникает, когда вы пытаетесь вставить пустое значение в столбец 'ID', который, вероятно, ожидает целочисленное значение. 

Есть несколько способов исправить эту ошибку:

1. Убедитесь, что вставляемое значение 'ID' является целым числом. Если вы ожидаете строковое значение, убедитесь, что значение не пустое перед вставкой.

2. Проверьте определение таблицы в вашей базе данных и убедитесь, что столбец 'ID' настроен соответствующим образом. Возможно, у вас есть ограничение NOT NULL для этого столбца, поэтому убедитесь, что вы передаете верное значение.

3. Если все остальные столбцы таблицы заполнены правильно, но вы все равно получаете эту ошибку, попробуйте изменить настройки режима строгого выполнения запросов PDO. Вы можете использовать следующую команду после создания объекта PDO:

   ```php
   $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
   ```

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

4. Проверьте все остальные значения, которые вы вставляете в таблицу. Может быть, есть другие столбцы, значения для которых некорректны.

5. Если проблема все еще не устранена, рекомендуется проверить код, который формирует и выполняет SQL-запрос. Возможно, в вашем коде есть ошибка, приводящая к передаче пустого значения в столбец 'ID'.

Надеюсь, эти рекомендации помогут вам исправить ошибку! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.
1) Читаем текст ошибки 
2) В меру способностей переводим, в случае клинического английского пользуемся онлайн переводчиками.
3) Сравниваем текст ошибки с реальной ситуацией в коде, находим 10 отличий от желаемого
4) Чиним
5) Профит, пиво, радость, дофамин...

Так же рекомендуется:
Проверять данные перед вставкой/апдейтом, например тупо проверив что пришло в $_GET/$_POST
Использовать подготовленные выражения, так как сейчас у вас там дыра в безопасности (ну хоть что-то в безопасности)) )
По возможности изучить стандарты нейминга и PSR в целом.

ЗЫ: делать препэйр и при этом вставлять данные прям строкой - особый вид искусства...
На момент формирования массива $Gener переменная $ID не определена. Да и вообще колонка ID не должна присутствовать в изменяемых полях. 
А вообще, код на выброс. В нём нет защиты от инъекций. Передаём в $_POST['ID'] строку '0 or 1 = 1' и меняем сразу все записи в таблице.
Похожие вопросы