Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL插入列值与自动增量相同的行_Php_Mysql - Fatal编程技术网

Php MySQL插入列值与自动增量相同的行

Php MySQL插入列值与自动增量相同的行,php,mysql,Php,Mysql,id列是自动递增的。我希望“rank”列与“id”列中新生成的自动增量值具有相同的值。(例如,假设下一个自动增量值为999…我希望排名也等于此) 我可以在一个查询中完成此操作吗?或者我必须运行一个额外的查询来获取之前的自动增量值吗 $query = "INSERT INTO $table1(id,name,rank) VALUES('','bob','999')"; last\u insert\u id()仅在插入完成后设置(无论是否成功)。如果你尝试像 INSERT INTO yourtab

id列是自动递增的。我希望“rank”列与“id”列中新生成的自动增量值具有相同的值。(例如,假设下一个自动增量值为999…我希望排名也等于此)

我可以在一个查询中完成此操作吗?或者我必须运行一个额外的查询来获取之前的自动增量值吗

$query = "INSERT INTO $table1(id,name,rank)
VALUES('','bob','999')";
last\u insert\u id()
仅在插入完成后设置(无论是否成功)。如果你尝试像

INSERT INTO yourtable (id, dupe_id) VALUES (null, last_insert_id())
希望
dupe_id
得到与
id
相同的id,然后。。。不,不会的
last\u insert\u id()
将返回在此特定语句之前运行的插入所创建的id

你必须做(基本上):


使用此查询可以在一次插入中获得实际的自动增量值:

insert into tablename (name,rank) values ( 'bob',(SELECT AUTO_INCREMENT
FROM information_schema.tables
WHERE table_name = 'tablename'
AND table_schema = DATABASE( ) ) )

请参阅此处的详细信息-

为什么希望两列具有相同的值?似乎你应该在你需要的任何地方引用
id
rank
…我唯一能想象的是,你以后可能想改变rank,但id总是保持不变。在这种情况下,您可以在开始时将秩设置为-1或NULL或类似值,如果找到此值,则始终将id用作秩。
rank
会发生更改,并且仅在插入时与
id
相同。好的一点是:)从性能的角度来看,这比运行两个单独的查询快吗?一个获得AI值,然后一个获得AI值Insert@Bxx在MySQL中,读取一行信息比写入一行信息占用的资源更少,因此
SELECT AUTO_INCREMENT…
应该比
updatetablename…
更快。这保证是原子的吗?
insert into tablename (name,rank) values ( 'bob',(SELECT AUTO_INCREMENT
FROM information_schema.tables
WHERE table_name = 'tablename'
AND table_schema = DATABASE( ) ) )