从PHP传递NULL到MySQL的自动增量(Passing NULL from PHP to MyS

2019-06-25 08:52发布

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

我得到一个语法错误...

在我做错了这里究竟发生了什么任何想法?

感谢您的任何帮助!

Answer 1:

它应该是:

$sql = "insert into namesdb values(NULL, 'firstname', 'lastname')";
$result = $db->query($sql);

'NULL'是一个字符串"NULL"

虽然另一个选项(一个我会去)是明确列出的列:

INSERT INTO namesdb (firstname, lastname) VALUES ('firstname', 'lastname')

我宁愿列出列,因为它是更长远的保障,而且它更容易地看到发生了什么事情。 试想一下,如果列被重新排列,添加,或在将来删除。 突然,固定你的查询将是一个巨大的痛苦,如果你要到处删除第六无名参数(例如)。



Answer 2:

它更好地指定要插入和不指定id字段的字段名

喜欢

       insert into namesdb(firstname,lastname) values('firstname', 'lastname')

它会自动增加你的id字段



Answer 3:

您可以编写查询,这样既避免了这个问题..

 $sql = "INSERT INTO table_name SET column_name_1 = 'value_1', column_name_2 = 'value_2'";


Answer 4:

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

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



文章来源: Passing NULL from PHP to MySQL for auto increment
标签: php mysql mysqli