PHP ODBC bağlantısından son insert id alın

7 Cevap php

Nasıl bir ODBC bağlantısı kullanarak bir veritabanından son insert id alabilirim?

Ben mysql_insert_id () işlevine benzer bir çözüm arıyorum.

7 Cevap

PHP ile veritabanları kullanılarak ediyorsanız kuvvetle PDO kullanmanızı öneririz (ortak veritabanı motorları bir sürü için basit bir veritabanı sarıcı, daha fazla her zaman, PHP kanon parçası desteklenir), ve dolayısıyla PDO::lastInsertId kullanıyorsanız veritabanı mysql_insert_id eşdeğer destekler.

"FROM tablo max (id) SELECT;" kullanmayın ciddi garip ve zor buluyorum daha sonra hataları neden olabilir gibi.

* **UPDATE: Tamam, ODBC kullanarak konum, ve ben sonra olduğunuz şüpheli odbc_cursor. Bir ODBC sürücüsü olduğu gibi yine, PDO kullanmak için güçlü recomendation stand by. (Gözlerime ODBC nefesi parçalanıyor onun kamyon sürücü altında mırıldanıyor bir huysuz acı yaşlı bir adam olduğunu, onların seksi VOLVO S90 adlı kalça ve etkili PDO adamlar yarış geçmişte olduğu gibi)

ID olarak kimlik SELECT @ @

Bu veritabanı türüne bağlıdır, ancak RDBM için SIRASI sözdizimi içine bakmak.

Eğer PHP ile veritabanı içine satır ekleme musunuz? Sonra veritabanını sorgulamak gerek kalmadan kimliğini bilecek - Eğer öyleyse, belki uniqid kullanarak benzersiz bir birincil anahtar () üretebilirsiniz.

Bu anahtar türü güncellemek mümkün değilse, belki de ekler yaptığınızda yine benzersiz bir kimliği ekleyebilir, böylece bu gibi bir sorgu yapabilirsiniz:

SELECT id FROM mytable WHERE rowid = '$myuniqueid'

Eğer veritabanından doğru kimliği geri çekiyoruz o sağlanması konum bu şekilde - MAX (id) çok daha iyi bir çözüm.

I used "SELECT @@IDENTITY AS LastID", while working with PHP/MSSQL, through ODBC. That brought some issues under SQL 2005 server (or was it 2000?). Either way if you do like this:

SET NOCOUNT ON
[NOW INSERT YOUR INSERT SQL QUERY]
SELECT @@IDENTITY AS LastID

Eğer herhangi bir MSSQL sunucu sürümünde sadece para cezası olmalıdır.

Script düzgün çalışmaya devam edecektir 'eklenen '1 satır gibi mesajlar göndermesini engeller SQL Server "ON SET NOCOUNT".

ODBC altında MySQL varsa - Eğer bir sonraki sorguyu kullanabilirsiniz:

"SELECT LAST_INSERT_ID( );"

Bu INSERT sorgusu yürüttükten sonra mmediately idam gerekir.

Diğer veritabanı için - diğer özel sorguları kullanabilirsiniz ...

Kullanma

SELECT max(id) FROM table;

Bir hareket içinde ince olmalı, ya da ODBC işlemleri desteklemiyor?