我需要在MySQL表中插入一个包含32个字段的长行。
我想做这样的事情:
$sql="insert into tblname values (... 32 fields ...)";
显然,如果字段与MySQL表字段的顺序相同,则它可以正常工作。但是,我的表有一个自动增量ID,因为它是第一个字段。
我想要的是填写所有表名,但第一个(id)填写。
建议?
答案 0 :(得分:69)
只需使用NULL
作为您的第一个值,autoincrement
字段仍将按预期工作:
INSERT INTO tblname VALUES (NULL, ... 32 Fields ... )
答案 1 :(得分:12)
将NULL
插入自动增量字段。
我建议除非这是一个黑客脚本,否则使用字段名称。理由是,如果您向表中添加字段或更改其顺序,则代码将中断。
相反,要明确使用字段名称,将来会更好。
答案 2 :(得分:-1)
当我们在插入查询中没有列名时尝试时,我们应该省略任何列值,
建议以上信息是否有误。
答案 3 :(得分:-3)
这是我用过的一条很好的快捷方式(由一位为我写这篇文章的朋友提供)
$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.')';