将NULL从PHP传递到MySQL以进行自动增量

时间:2012-06-05 06:22:10

标签: php mysql mysqli

所以我在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);

我找回了语法错误...

关于我在这里做错了什么的任何想法?

感谢您的帮助!

4 个答案:

答案 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')";

上述查询的原因是因为自动增量。