Передача NULL из PHP в MySQL для автоматического увеличения

Поэтому у меня есть база данных в MySQL с тремя столбцами. Первый столбец – «idnum», который автоматически увеличивает число идентификаторов пользователей. Второй и третий – это фамилия и имя. Моя проблема в том, когда я отправляю имена в БД через строку запроса в моем PHP-файле, я получаю пару разных ошибок обратно …

Когда я отправлю запрос:

$sql = "insert into namesdb values('NULL', 'firstname', 'lastname')"; $result = $db->query($sql); 

Я возвращаю эту ошибку: «Неверное целочисленное значение:« NULL »для столбца« idnum »в строке 1.» Поскольку столбец 1 является типом INT.

Но затем, когда я отправляю этот запрос:

 $sql = "insert into namesdb values(".NULL.", 'firstname', 'lastname')"; $result = $db->query($sql); 

Я возвращаю синтаксическую ошибку …

Любая идея о том, что я тут делаю неправильно?

Спасибо за любую помощь!

Должен быть:

 $sql = "insert into namesdb values(NULL, 'firstname', 'lastname')"; $result = $db->query($sql); 

'NULL' – это строка "NULL" .

Хотя другой вариант (тот, который я бы использовал), должен явно указывать столбцы:

 INSERT INTO namesdb (firstname, lastname) VALUES ('firstname', 'lastname') 

Я предпочитаю перечислять столбцы, потому что это более надежное будущее, и легче понять, что происходит. Представьте, если столбцы будут перегруппированы, добавлены или удалены в будущем. Внезапно исправление ваших запросов будет огромной болью, если вам придется удалить 6-й неназванный параметр везде (например).

Его лучше указать имена полей, которые вы хотите вставить, и не указывать поле id

как

  insert into namesdb(firstname,lastname) values('firstname', 'lastname') 

Он автоматически увеличит ваше поле id

Вы можете написать запрос таким образом, чтобы избежать этой проблемы.

  $sql = "INSERT INTO table_name SET column_name_1 = 'value_1', column_name_2 = 'value_2'"; 
 $sql = "insert into namesdb values('NULL', 'firstname', 'lastname')"; 

В вышеприведенном запросе «NULL» представляет собой строковый объект, а ваш столбец является Integer, поэтому ошибка.

 $sql = "insert into namesdb values(".NULL.", 'firstname', 'lastname')"; 

В этом запросе вы отправляете значение php NULL, поэтому окончательный запрос выглядит следующим образом:

 "insert into namesdb values(, 'firstname', 'lastname')"; 

Поэтому он недействителен.

Правильный способ вставки должен быть таким

 $sql = "insert into namesdb values(NULL, 'firstname', 'lastname')"; 

или как это

 $sql = "insert into namesdb values('firstname', 'lastname')"; 

Причина, по которой работает запрос выше, связана с автоматическим приращением.