Soru başlığı ne diyor. SELECT @@IDENTITY AS ins_id
gibi bir sorgu ile, hangi tabloyu/veritabanını konuştuğumu belirtmek için tablo adını veya başka bir bilgiyi vermem gerekiyor mu?PHP'de MSSQL'e Insert id nasıl eklenir?
cevap
@@IDENTITY
. Çoğu durumda, muhtemelen geçerli kapsamda oluşturulan en yeni kimliği döndüren SCOPE_IDENTITY
'u kullanmak isteyeceksiniz. Eğer table1 bir satır eklemek, ancak bu uç tablo2 bir satır ekler bir tetikleme halinde SCOPE_IDENTITY
gelen kimlik döndürür iken
Örneğin, daha sonra @@IDENTITY
tablo2 gelen kimlik döndürür tablo1.
INSERT INTO my_table (my_column) VALUES ('test')
-- return the identity of the row you just inserted into my_table
-- regardless of any other inserts made by triggers etc
SELECT SCOPE_IDENTITY() AS ins_id
Hayır; mysql içinde SELECT LAST_INSERT_ID() gibi çok fazla çalışır, eklenen son kimlik değerini alır. Bununla ilgili endişeleriniz hakkında daha fazla bilgi için this in-depth examination'a göz atmak isteyebilirsiniz. Geçerli oturumda oluşturulan en yeni kimlikleri döndürür.
Burada kod snippet'i biraz Joomla koduna dayanmaktadır. $ dbh veritabanı bağlantısıdır (mssql_connect() sonucudur). $ KeyName argümanını iletirseniz anahtar adı (ID) güncellenir.
Bu kod MSSQL anahtar sözcüğünü kullanarak "OUTPUT" anahtarını kullanarak girilen değerin kimliğini (veya herhangi bir değerini) elde etmektir.
function mssql_insertObject($table, &$object, $keyName = NULL)
{
global $dbh;
if($keyName) {
$fmtsql = 'INSERT INTO '. $table .' (%s) OUTPUT INSERTED.' . $keyName . ' VALUES (%s) ';
}
else {
$fmtsql = 'INSERT INTO '. $table .' (%s) VALUES (%s) ';
}
$fields = array();
foreach (get_object_vars($object) as $k => $v) {
if (is_array($v) or is_object($v) or $v === NULL) {
continue;
}
if ($k[0] == '_') { // internal field
continue;
}
$fields[] = $k;
$values[] = "'" . str_replace("'", "''", $v) . "'";
}
$sql = sprintf($fmtsql, implode(",", $fields) , implode(",", $values));
$query = mssql_query($sql, $dbh);
if($query === false) {
return false;
}
if(is_resource($query))
{
if($keyName) {
$id = mssql_result($query, 0, 0);
if($id) {
$object->$keyName = $id;
}
}
mssql_free_result($query);
}
return true;
}
Bu çözümü seviyorum çünkü SCOPE_IDENTITY ile bir GUID (pk) alamadığınız için tüm temellerinizi kapsayacağına inanıyorum. Ama sql deyiminizdeki OUTPUT INSERTED ile birlikte mssql_result kullanımı otomatik artışlı tamsayılar veya benzersiz olan pk ile çalışır. GUID'ler gibi sokar. – greaterKing
- 1. PostgreSql INSERT SELECT RETURNING ID
- 2. MySQL Insert ifadesinde bir where cümlesi nasıl eklenir?
- 3. INSERT
- 4. sınıf, id nasıl eklenir, tutucu django modelinde bir alana niteliklerini
- 5. CKEditor'da CSS sınıfları ve paragraflara bir ID nasıl eklenir?
- 6. id
- 7. Veritabanından INSERT ve DELETE veriyi kullanarak bir bağlantıyı/düğmeyi tıklayarak ID ile MYSQLI
- 8. MYSQL INSERT SELECT sorunu
- 9. id
- 10. <insert action = ">
- 11. INSERT SELECT deyimi
- 12. Harita bul id = id idris?
- 13. BULGU INSERT
- 14. psycopg2 bağlantı havuzunda "INSERT" nasıl kullanılır?
- 15. SQL INSERT
- 16. INSERT [INT]
- 17. Laravel Eloquent, insert
- 18. petapoco insert sorunu
- 19. SQL'de INSERT için yinelenen değerler nasıl önlenir?
- 20. PHP CSV MySQL insert (utf8)
- 21. insert klavye karakter değeri
- 22. 'Sırayla' koşul nasıl eklenir?
- 23. SQL insert select @@ Kimlik
- 24. SQL tablonun boş bir satırı nasıl eklenir?
- 25. INSERT ve DELETE
- 26. URL'siz ID
- 27. max id
- 28. INSERT ifadelerinde mysql'de hesaplanan sütunlar
- 29. Gridview setOnItemClickListener nasıl eklenir
- 30. SELECT sonuçlarına dayalı SQL INSERT
Ben de gördüm: SEÇ CAST (BIRLEŞIM (SCOPE_IDENTITY(), int AS @@ KİMLİK)) – jjwdesign
Aşağı oy kullandı. Ben herhangi bir php görmüyorum, soru "PHP MSSQL içinde Insert id nasıl alınır". –