2

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

4 回答 4

4

它应该是:

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

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

虽然另一种选择(我会选择的那个)是明确列出列:

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

我更喜欢列出这些列,因为它更具未来性,而且更容易看到正在发生的事情。想象一下,如果将来重新排列、添加或删除列。如果您必须在任何地方(例如)删除第 6 个未命名参数,那么突然修复您的查询将是一个巨大的痛苦。

于 2012-06-05T06:23:18.480 回答
0

您可以通过这种方式编写查询以避免该问题。

 $sql = "INSERT INTO table_name SET column_name_1 = 'value_1', column_name_2 = 'value_2'";
于 2012-06-05T06:25:36.343 回答
0
$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')";

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

于 2012-06-05T06:25:48.400 回答
0

最好指定要插入的字段名称,不要指定 id 字段

喜欢

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

它会自动增加你的 id 字段

于 2012-06-05T06:24:14.140 回答