Php mysql больше не может ВСТАВИТЬ (Неверное целочисленное значение: '' для столбца 'id' в строке 1)

После перехода на новый компьютер (и Mac Mojave) мне не удалось ВСТАВИТЬ строки в базу данных из файлов php, используя классы и объекты. Нравится:

$new_entry = SomeClassName::add_record($foo, $bar );  
if ($new_entry && $new_entry->save()) {  
    //do something here  
}  

Определение класса выглядит так:

class SomeClassName extends DBObject {
    protected static $table_name = "some_table";
    protected static $db_fields = array( 'id' , 'foo' , 'bar' );
    public $id;
    public $foo;
    public $bar;
    public $errors=array();
}   

mysqli_error() дает мне:

Incorrect integer value: '' for column 'id' at row 1 

Я обнаружил, что все будет работать должным образом, если я удалю id из массива $db_fields и удалю строку public $id;. Однако у меня есть десятки классов, и я боюсь, что придется заново редактировать их все для этого - тем более, что весь мой код отлично работал на моем старом локальном сервере (с использованием php5.4) и по-прежнему отлично работает на моем общедоступном сервере (с использованием php 5.5), но не в моей новой настройке (с использованием php7). Итак, мой вопрос: есть ли лучшее решение, чем то, которое я придумал? Если так, то, что это? Совет очень приветствуется и ценится. (Даже насмешка, если это поможет решить эту досадную проблему.)

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
640
1

Ответы 1

Скорее всего, это из-за обновления MySQL (мне кажется, с 5.6 до 5.7). Вы должны передать целое число или NULL вместо пустой строки.

Передайте NULL или не указывайте поле в запросе, если идентификатор увеличивается автоматически.

Если вы не хотите явно определять null для каждой модели, вы можете попробовать написать какое-нибудь промежуточное ПО; например IF field IS id THEN skip field OR use null value (псевдокод ofc)

Другие вопросы по теме