2011-09-20 118 views
46

想知道是否有简写版本将新记录插入启用主键的表中? (即不必在查询中包括关键列) 比方说键列,被称为ID,其他列FNAME,LNAME和网站PHP mySQL - 在主键上使用自动增量插入新记录

$query = "INSERT INTO myTable VALUES ('Fname', 'Lname', 'Website')"; 
+0

你已经得到了答案。你的例子应该按预期工作(aasuming ID是一个自动增量)。 – konsolenfreddy

+1

@konsolenfreddy:他使用插入sytnax,要求指定每个列值。 – webbiedave

+2

我建议不要在应用程序中插入这种类型的sytnax,因为如果将来添加列(或更改列顺序),则必须返回并更改SQL语句,即使这些列具有默认值。如果它是一次数据库更新,那么这没什么大不了的。 – webbiedave

回答

94

使用默认的关键字:

$query = "INSERT INTO myTable VALUES (DEFAULT,'Fname', 'Lname', 'Website')"; 

此外,您还可以指定列,(这是更好的做法):

$query = "INSERT INTO myTable 
      (fname, lname, website) 
      VALUES 
      ('fname', 'lname', 'website')"; 

参考:

+0

是的,我知道最好设置每一列。但是这张表的表格不会被改变,所以我只是好奇如何使用最少量的代码来实现这个诀窍。谢谢! – JimmyJammed

+4

“不会被改变”是一个非常巨大的假设。也许这是一个一次性的表格,当你完成这个当前的任务时你会放弃它,但是否则谁知道业务需求何时会以意想不到的方式发生变化。在绝大多数情况下,如果您使用带列名的第二个表单,那么接下来需要维护系统的人将非常感激。 – GrandOpener

5
$query = "INSERT INTO myTable VALUES (NULL,'Fname', 'Lname', 'Website')"; 

临走的价值AI主键NULL将分配一个自动递增的值。

+11

-1,''''不等于NULL。 – Johan

+0

这实在是很冒险的行为,它依靠MySQL将空字符串转换为一个整数(这不是严格的行为),失败时没有错误(可配置),然后像通常那样使用null(null变为空相当于DEFAULT)。我真的建议不要使用这个。 – scragar

+2

这是一个旧的:P我更新了null而不是空字符串。 –

12

我更喜欢这句法:

$query = "INSERT INTO myTable SET fname='Fname',lname='Lname',website='Website'"; 
+3

+1,我也喜欢,只适用于MySQL /不能在SQLite中运行。 –

4

这是phpMyAdmin方法。

$query = "INSERT INTO myTable 
     (mtb_i_idautoinc, mtb_s_string1, mtb_s_string2) 
     VALUES 
     (NULL, 'Jagodina', '35000')"; 
+0

如果你打算给PHP一个查询,你应该真的使它成为一个参数化查询。 – GrandOpener

相关问题