所以我在MySQL中有三列数据库设置。第一列是“idnum”,自动递增用户ID号。第二个和第三个是尊敬的名字和姓氏。我的问题是当我通过PHP文件中的查询字符串将名称发送到数据库时,我得到了几个不同的错误...
当我发送查询时:
$sql = "insert into namesdb values('NULL', 'firstname', 'lastname')";
$result = $db->query($sql);
我收回此错误:“第1行的列'idnum'的整数值不正确:'NULL'”因为第1列是INT类型。
但是当我发送此查询时:
$sql = "insert into namesdb values(".NULL.", 'firstname', 'lastname')";
$result = $db->query($sql);
我找回了语法错误...
关于我在这里做错了什么的任何想法?
感谢您的帮助!
答案 0 :(得分:4)
应该是:
$sql = "insert into namesdb values(NULL, 'firstname', 'lastname')";
$result = $db->query($sql);
'NULL'
是一个"NULL"
的字符串。
虽然另一个选项(我将使用的选项)是明确列出列:
INSERT INTO namesdb (firstname, lastname) VALUES ('firstname', 'lastname')
我更喜欢列出列,因为它更具有未来性,并且更容易看到正在发生的事情。想象一下,如果将来重新排列,添加或删除列。如果你不得不在任何地方删除第6个未命名的参数(例如),突然修复你的查询将是一个巨大的痛苦。
答案 1 :(得分:0)
更好地指定要插入的字段名称,不要指定id字段
喜欢
insert into namesdb(firstname,lastname) values('firstname', 'lastname')
它会自动递增你的id字段
答案 2 :(得分:0)
你可以用这种方式编写查询来避免这个问题。
$sql = "INSERT INTO table_name SET column_name_1 = 'value_1', column_name_2 = 'value_2'";
答案 3 :(得分:0)
$sql = "insert into namesdb values('NULL', 'firstname', 'lastname')";
在上面的查询中,'NULL'是一个字符串对象,你的列是一个Integer,所以错误。
$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')";
上述查询的原因是因为自动增量。