Php 正在写入的行的ID-mysqli

Php 正在写入的行的ID-mysqli,php,mysqli,Php,Mysqli,这可以在单个查询中完成吗?该表有一个自动递增字段,我需要知道填充表中url字段的数字 Table id(AI) | title | url 我所期待的是 在表标题中插入url值“name”和“标题与ID的连接” 我目前正在使用2个查询进行此操作 1.写入URL以外的字段。 使用mysqli\u insert\u id获取id 2.更新上面写入的行 备注:该表还有其他字段,因此在这种情况下,更改数据库设计是不可能的。它不能以原子方式完成。从理论上讲,您可以从表中选择MAXid+1,但请不要这样

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

Table 
id(AI) | title | url
我所期待的是 在表标题中插入url值“name”和“标题与ID的连接”

我目前正在使用2个查询进行此操作

1.写入URL以外的字段。 使用mysqli\u insert\u id获取id

2.更新上面写入的行


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

它不能以原子方式完成。从理论上讲,您可以从表中选择MAXid+1,但请不要这样做,尽管这不能保证给您正确的结果,而且绝对不是一种安全的方法


不管怎么说,这似乎是个坏习惯。为什么不在获取时连接标题和ID?为什么必须在insert上连接它?

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

我自己在一个项目中使用这段代码的原因与您自己的类似,它对我很有效,因为该表每天只更新几次,而且一次不会由多个人更新

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

需要说明的是,此代码将获取自动增量ID,该ID将提供给指定表的下一个表条目。

是的,在任何情况下,我都不会使用MAX。连接title和ID是可以的,但是为了将代码保持在最小,为了更快的执行,我想如果可能的话,我会这样做。字符串的连接比到MySQL服务器的第二次往返查询对性能的影响要小得多——这是解决这个问题的唯一方法。记住,有一种东西叫做过度优化。你把我搞错了。如果我需要在脚本中连接,而不是从数据库中获取url字段,我需要获取两个字段,id和title,然后处理数组。对于生成url字段的单个查询来说,这有点复杂。但如果那是唯一的办法,我肯定会走那条路。干杯我听到了。但是,从结果集中获取第二列要比完整的单独查询容易得多。在这种情况下,大部分延迟是网络延迟,而不是查询速度。添加额外的列并不会真正影响网络延迟。而且它不太可能通过任何可测量的方式影响查询速度。这就是我要走的路线。科林,我明白了要么不要使用自动增量,重构一个糟糕的设计比继续使用它更好,甚至可以将url设置为主键,要么在应用程序模型中获取它时进行这种连接layer@cyril-我不认为这是一个糟糕的设计。我正在存储一篇文章,表中有id、title、userid、content、timestamp和url。你还认为这是个糟糕的设计吗?我不这么认为。当id自动生成时,尝试将url与id相结合是一个糟糕的设计。其背后的想法是,获取唯一的url,在url中有两行标识符以防万一。标题和行。连接将类似于$Title.-.$id,这样我可以拆分它们并同时使用它们。如果你有另一个建议,我也希望听到我的回答,即使你知道两个人永远不会同时给同一张桌子写信,这仍然是危险的。它打破了传统查询的自主性。