PHP MYSQL - 不使用列名但使用自动增量字段插入

发布于 2024-08-13 18:26:31 字数 242 浏览 4 评论 0原文

我需要将包含 32 个字段的长行插入 MySQL 表中。

我想做这样的事情:

$sql="insert into tblname values (... 32 fields ...)";

显然,如果字段与 MySQL 表字段的顺序相同,它就可以正常工作。但是,我的表有一个自动递增 id 作为它的第一个字段。

我想要的是填写除第一个(id)之外的所有表名。

建议?

I need to insert a long row with 32 fields into a MySQL table.

I'd like to do something like this:

$sql="insert into tblname values (... 32 fields ...)";

Obviously, it works fine if the fields are in the same order as the MySQL table fields. But, my table has an auto-increment id as it's first field.

What I want is to fill in all table names but the first (id) one.

Suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

一百个冬季 2024-08-20 18:26:31

只需使用 NULL 作为您的第一个值,autoincrement 字段仍将按预期工作:

INSERT INTO tblname VALUES (NULL, ... 32 Fields ... )

Just use NULL as your first value, the autoincrement field will still work as expected:

INSERT INTO tblname VALUES (NULL, ... 32 Fields ... )
我不吻晚风 2024-08-20 18:26:31

NULL插入到自动增量字段中。

我建议除非这是一个 hack 脚本,否则您应该使用字段名称。理由是,如果您向表中添加字段或更改其顺序,您的代码将中断

相反,明确字段名称,将来会更好。

Insert NULL into the auto-increment field.

I recommend that unless this is a hack script, you use field names. The rationale is that your code will break if you ever add a field to the table or change their order.

Instead, be explicit with field names, and it will go much better in the future.

a√萤火虫的光℡ 2024-08-20 18:26:31

使用NULL0插入自动递增值,如下所示:

                         -- Here
INSERT INTO tblname VALUES (NULL, ... 32 Fields ... )
                         -- Here
INSERT INTO tblname VALUES (0, ... 32 Fields ... )

Use NULL or 0 to insert an auto-incremented value as shown below:

                         -- Here
INSERT INTO tblname VALUES (NULL, ... 32 Fields ... )
                         -- Here
INSERT INTO tblname VALUES (0, ... 32 Fields ... )
猫弦 2024-08-20 18:26:31

当我们尝试在插入查询中不使用列名时,我们应该省略任何列值,

如果上述信息有误,请告知。

We should omit any column values when we try without column name in insert query,

Advise if above information is wrong.

不羁少年 2024-08-20 18:26:31

这是我使用的一个简单的快捷方式:

$fieldlist=$vallist='';
foreach ($_POST as $key => $value) {
 $fieldlist.=$key.',';
 $vallist.='\''.urlencode($value).'\','; }
$fieldlist=substr($fieldlist, 0, -1);
$vallist=substr($vallist, 0, -1);
$sql='INSERT INTO customer_info ('.$fieldlist.') VALUES ('.$vallist.')'; 

请注意,此代码容易受到 SQL 注入 并应进行修改以适应 PDO,但我认为这个简化的脚本会更直接地回答有关最初发布的代码的问题。

Here's a simple shortcut that I've used:

$fieldlist=$vallist='';
foreach ($_POST as $key => $value) {
 $fieldlist.=$key.',';
 $vallist.='\''.urlencode($value).'\','; }
$fieldlist=substr($fieldlist, 0, -1);
$vallist=substr($vallist, 0, -1);
$sql='INSERT INTO customer_info ('.$fieldlist.') VALUES ('.$vallist.')'; 

Please note that this code would be vulnerable to SQL Injection and should be modified to accommodate PDO's, but I felt this simplified script would more directly answer the question with regards to the originally posted code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文