所以,我有在MySQL数据库中设置有三列。 第一列是“IDNUM”是自动递增的用户ID号。 第二个和第三个名字和姓氏尊称。 我的问题是,当我去通过一个查询字符串在我的PHP文件发送姓名到数据库,我得到了几个不同的错误回来...
当我发送查询:
$sql = "insert into namesdb values('NULL', 'firstname', 'lastname')";
$result = $db->query($sql);
我回到这个错误:“不正确的整数值:列‘IDNUM’‘NULL’在第1行。” 因为列1为INT类型。
但后来当我将这个查询:
$sql = "insert into namesdb values(".NULL.", 'firstname', 'lastname')";
$result = $db->query($sql);
我得到一个语法错误...
在我做错了这里究竟发生了什么任何想法?
感谢您的任何帮助!
它应该是:
$sql = "insert into namesdb values(NULL, 'firstname', 'lastname')";
$result = $db->query($sql);
'NULL'
是一个字符串"NULL"
。
虽然另一个选项(一个我会去)是明确列出的列:
INSERT INTO namesdb (firstname, lastname) VALUES ('firstname', 'lastname')
我宁愿列出列,因为它是更长远的保障,而且它更容易地看到发生了什么事情。 试想一下,如果列被重新排列,添加,或在将来删除。 突然,固定你的查询将是一个巨大的痛苦,如果你要到处删除第六无名参数(例如)。
它更好地指定要插入和不指定id字段的字段名
喜欢
insert into namesdb(firstname,lastname) values('firstname', 'lastname')
它会自动增加你的id字段
您可以编写查询,这样既避免了这个问题..
$sql = "INSERT INTO table_name SET column_name_1 = 'value_1', column_name_2 = 'value_2'";
$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')";
上述查询工作的原因是因为自动增量。