Хорошо, у меня есть объект класса в php, где создается оператор INSERT, так что он не дает значения для идентификатора, потому что он предназначен для простого автоинкремента, когда он передается в базу данных.Раньше работал, сейчас нет.на самом деле, он все еще работает на моем живом сервере, но не на моей среде разработки localhost.Мой sql выглядит следующим образом:
INSERT INTO sessions (u_sess, user_id, school_id, teacher_id, test_id, holder_id, visible, date_created, last_updated) VALUES ('', '1', '1', '', '', '', '', '2019-09-19 22:18:58', '2019-09-19 22:18:58')Database query failed.
Когда я вставляю это в окно SQL моего phpMyAdmin, он дает мне более подробный отзыв о проблеме:
1366 - Неверное целое числозначение: '' для столбца 'u_sess' в строке 1
Итак, я изменил свой оператор INSERT, чтобы он выглядел так, как будто в первой позиции есть NULL, и это сводит ошибку к следующей пустой строке.Итак, я предполагаю, что ошибка происходит из-за того, что мой объект php создает инструкцию INSERT с пустыми строками, а не NULL для всех неизвестных значений.Я не знаю, как правильно изменить мой объект php, чтобы он распознавал и переопределял каждый из них как NULL.Я уверен, что это решило бы это, потому что, когда я изменяю ВСЕ пустые строки на NULL ... вещь, наконец, вставляется правильно.
Вот мой метод CREATE:
global $database;
$attributes = $this->sanitized_attributes();
$sql = "INSERT INTO ".self::$table_name." (";
$sql .= join(", ", array_keys($attributes));
$sql .= ") VALUES ('";
$sql .= join("', '", array_values($attributes));
$sql .= "')";
echo $sql;
if($database->query($sql)) {
$this->u_sess = $database->insert_id();
return true;
} else {
return false;
}
}