1

这可以在单个查询中完成吗?该表有一个自动增量字段,我需要知道填写表中 url 字段的数字。

Table 
id(AI) | title | url

我期待的是 INSERT INTO table (title,url) VALUES ('name','CONCATENATION OF title AND ID');

我目前正在使用 2 个查询来执行此操作。

1.编写除URL以外的字段。使用获取 idmysqli_insert_id()

2.更新上面写的行。

PS:该表还有其他字段,因此在这种情况下更改数据库设计实际上是不可能的。

4

2 回答 2

2

它不能以原子方式完成。理论上,您可以SELECT MAX(id) + 1 FROM yourtable,但请不要 - 尽管这不能保证给您正确的结果,也绝对不是一种安全的方法。

无论如何,这似乎是不好的做法。为什么在获取时不连接标题和 ID?为什么必须在插入时连接它?

于 2012-12-09T17:15:12.343 回答
0

我不会评论你的数据库的设计——你是评判者。请记住,以下命令获取指定表的下一个自动增量 ID,并且如果其他用户在您的代码可以使用该表之前访问该表,则此数字可能会立即更改。

我自己在一个项目中使用此代码的原因与您自己的原因相似,它对我有用,因为该表每天仅更新几次,并且一次不会超过一个人。

 SELECT Auto_increment FROM information_schema.tables WHERE 
 table_name = '$name_of_your_table';

为了清楚起见,此代码获取将提供给指定表的下一个表条目的自动增量 ID。

于 2012-12-09T20:19:27.990 回答