mysql_insert_id的疑问
CREATE TABLE `create_id` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '生成自增user_id', `v` varchar(1) NOT NULL COMMENT '用于生成新的id', PRIMARY KEY (`id`), UNIQUE KEY `v` (`v`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;replace into `create_id` set `v`='1' ;
执行这条sql之后,用mysql_insert_id无法获得insert id。有什么方法/函数能获得replace into产生的新id?
回复讨论(解决方案)
replace 指令可能产生,也可能不产生新的 id
所以获取不到是正常的
那么 有什么方法/函数能获得replace into产生的新id?
答案是没有,但你可以指定 id
replace 指令可能产生,也可能不产生新的 id
所以获取不到是正常的
那么 有什么方法/函数能获得replace into产生的新id?
答案是没有,但你可以指定 id
按照我的表结构,且每次均执行同一个sql,也有可能不产生新的id?
v是唯一的,我每次都reaplace into同一个值,id应该会每次都自增1才对呀?
被你忽悠了!
刚才测试了一下,是能取到的
而且我看到php手册里有这么一段提示:
Warning
mysql_insert_id() 将 MySQL 内部的 C API 函数 mysql_insert_id() 的返回值转换成 long(PHP 中命名为 int)。如果 AUTO_INCREMENT 的列的类型是 BIGINT,则 mysql_insert_id() 返回的值将不正确。可以在 SQL 查询中用 MySQL 内部的 SQL 函数 LAST_INSERT_ID() 来替代。
replace into `create_id` set `v`='1';select LAST_INSERT_ID() as `id` from `create_id`;
这样确实能返回最新的id呀。
select LAST_INSERT_ID() as `id` from `create_id`;
?
select id from `create_id` order by id desc limit 1
不是一???
被你忽悠了!
刚才测试了一下,是能取到的
呃。。。我看php手册里面有一个老外这么写到:
athies at gmail dot com 21-Jul-2005 11:36
Just a quick note. mysql_insert_id() does work with REPLACE.
select LAST_INSERT_ID() as `id` from `create_id`;
?
select id from `create_id` order by id desc limit 1
不是一???
并发的情况下, order by id desc 可能就是别人的id了
LAST_INSERT_ID() 是在某个数据库连接的范围内吗?
原来这样也可以获id,学习了
select id from tb order by id desc limit 1
select id from tb order by id desc limit 1
这个只可以获取库里面的id吧?楼主是在插入数据的时候,要获取当前id。我用TP写的:
$Form=M('member');
$sql="show table status where Name='fht_member'";
$rs=$Form->query($sql);
$Mid=$rs[0]['Auto_increment'];
返回记录集有个['Auto_increment'],就是当前插入的自增id
后来发现mysql_insert_id()真能取到,感谢各位的踊跃发言

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Alipay Php ...

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Bagaimana cara debug mod CLI dalam phpstorm? Semasa membangun dengan PHPStorm, kadang -kadang kita perlu debug PHP dalam mod Interface Line Command (CLI) ...

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Bagaimana untuk menetapkan keizinan UnixSocket secara automatik selepas sistem dimulakan semula. Setiap kali sistem dimulakan semula, kita perlu melaksanakan perintah berikut untuk mengubahsuai keizinan UnixSocket: sudo ...

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Artikel membincangkan ciri -ciri keselamatan penting dalam rangka kerja untuk melindungi daripada kelemahan, termasuk pengesahan input, pengesahan, dan kemas kini tetap.
