Вопрос по php, mysql – Передача NULL из PHP в MySQL для автоматического увеличения

2

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

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

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

Я получаю эту ошибку: & quot; Неверное целочисленное значение: & quot; NULL & apos; для столбца "idnum" в строке 1. & quot; Потому что столбец 1 имеет тип INT.

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

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

Я получаю обратно синтаксическую ошибку ...

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

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

Вы просто пытаетесь не вставить значение для idnum, правильно? Если это так, взгляните на вторую половину ответа Корбина. Vulcan

Ваш Ответ

4   ответа
0

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

лайк

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

Это автоматически увеличит ваше поле идентификатора

Error: User Rate Limit Exceeded Matt Whitehead
4

Так должно быть:

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

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

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

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

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Matt Whitehead
0

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

 $sql = "INSERT INTO table_name SET column_name_1 = 'value_1', column_name_2 = 'value_2'";
Error: User Rate Limit Exceeded Matt Whitehead
0
$sql = "insert into namesdb values('NULL', 'firstname', 'lastname')";

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

$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')";

Причина вышеупомянутого запроса работает из-за автоинкремента.

Error: User Rate Limit Exceeded Matt Whitehead
Error: User Rate Limit Exceeded Matt Whitehead
Error: User Rate Limit Exceeded

Похожие вопросы