Мне нужно вставить длинную строку с 32 полями в таблицу MySQL.
Я хотел бы сделать что-то вроде этого:
$sql="insert into tblname values (... 32 fields ...)";
Очевидно, что он отлично работает, если поля находятся в том же порядке, что и поля таблицы MySQL. Но в моей таблице есть идентификатор автоинкремента, так как это первое поле.
Я хочу заполнить все имена таблиц, кроме первого (id).
Предложения?
Просто используйте NULL
качестве вашего первого значения, поле autoincrement
прежнему будет работать, как ожидалось:
INSERT INTO tblname VALUES (NULL, ... 32 Fields ... )
Вставьте NULL
в поле автоматического увеличения.
Я рекомендую, чтобы, если это не скрипт взлома, вы используете имена полей. Обоснование заключается в том, что ваш код сломается, если вы когда-нибудь добавите поле в таблицу или измените свой порядок.
Вместо этого будьте ясными с именами полей, и в будущем это будет намного лучше.
Мы должны опускать любые значения столбцов, когда мы пытаемся без имени столбца вставить запрос,
Посоветуйте, если вышеуказанная информация неверна.
Вот отличный ярлык, который я использовал (любезность друга, который написал его для меня)
$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.')';