Ответ 1
Просто используйте NULL
в качестве вашего первого значения, поле autoincrement
будет работать, как ожидалось:
INSERT INTO tblname VALUES (NULL, ... 32 Fields ... )
Мне нужно вставить длинную строку с 32 полями в таблицу MySQL.
Я хотел бы сделать что-то вроде этого:
$sql="insert into tblname values (... 32 fields ...)";
Очевидно, что он отлично работает, если поля находятся в том же порядке, что и поля таблицы MySQL. Но моя таблица имеет идентификатор автоинкремента в качестве первого поля.
Я хочу заполнить все имена таблиц, кроме первого (id).
Предложения?
Просто используйте NULL
в качестве вашего первого значения, поле autoincrement
будет работать, как ожидалось:
INSERT INTO tblname VALUES (NULL, ... 32 Fields ... )
Вставьте NULL
в поле автоматического инкремента.
Я рекомендую, чтобы, если это не хак script, вы используете имена полей. Обоснование заключается в том, что ваш код будет сломать, если вы когда-нибудь добавите поле в таблицу или измените свой порядок.
Вместо этого будьте явным с именами полей, и в будущем это будет намного лучше.
Мы должны опустить любые значения столбца, когда мы пытаемся без имени столбца вставить запрос,
Посоветуйте, не указана ли выше информация.
Вот отличный ярлык, который я использовал (любезно предоставил другу, который написал его для меня)
$fieldlist=$vallist='';
foreach ($_POST as $key => $value) {
$fieldlist.=$key.',';
$vallist.='\''.urlencode($value).'\','; }
$fieldlist=substr($fieldlist, 0, -1);
$vallist=substr($vallist, 0, -1);
$sql='INSERT INTO customer_info ('.$fieldlist.') VALUES ('.$vallist.')';