İnternet LAST_INSERT_ID () php bir saklı yordam sonra arama

3 Cevap php

i bir ekleme yapar mysql (en proc_create_node(parent INT) diyelim) bir saklı yordam tanımlamıştır.

ne ben sadece iyi aşağıdaki işleri yapıyor, mysql cli onu çağırır:

CALL proc_create_node(12);
SELECT LAST_INSERT_ID();

ve ben son eklenen id olsun:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|               15 | 
+------------------+

Şimdi, ben php bu satırları aramak, ya da ben mysql_insert_id() php fonksiyonunu kullanırsanız, ben her zaman geri döndüğümde 0.

ben ne eksik? nasıl ben php içinde son eklenen id alabilir?

seninki ... pierre

3 Cevap

Bir bağlantı başına) fonksiyonu çalışma (LAST_INSERT_ID değil - bu veritabanı bağlantısı ile ilgili bir şey olabilir?

Eğer saklı yordam içine SEÇ LAST_INSERT_ID () ekleyin ve geri dönmek için saklı yordam id sözü değiştirmek için iyi bir fikir olacağını düşünüyor musunuz?

burada çalışıyor:

$link = mysql_connect('localhost', 'root', '');
if (!$link) {
   die('Not connected : ' . mysql_error());
}

$db_selected = mysql_select_db('test', $link);
if (!$db_selected) {
   die ('Can\'t use test : ' . mysql_error());
}
$result = mysql_query('CALL blub(12)');
if (!$result) {
   die('Invalid query: ' . mysql_error());
}
$result = mysql_query('SELECT LAST_INSERT_ID()');
if (!$result) {
   die('Invalid query: ' . mysql_error());
}

print_r(mysql_fetch_assoc($result));

artan bir tamsayı basar. 5.1.30 ve php 5.2.9-1 MySQL.

böylece sorunu (oldukça bazı hatalar orada ne nerede) (sen? php geçerli parametreler geçiyoruz) veya php veya mysql sizin sürümlerinde saklı yordamda, sizin php kodunda olmalıdır.

btw: SELECT LAST_INSERT_ID() mysql_insert_id() olup not burada çalışan ile değiştirme.

Burada mysqli_multy_query kullanımını kontrol: http://ua.php.net/manual/en/mysqli.multi-query.php

Bu fonksiyon, sizinki gibi multi-deyim sorguları ile çalışmak üzere tasarlanmıştır. Ama php_mysqli modül aracılığıyla değil, eski uygulamayı desteklemek eğer basit değildir php_mysql ile çalışmak gerektiğini kullanmak için.

İkinci - saklı yordam için SELECT LAST_INSERT_ID () koymak ve yürütme sonucu içinde alabilirsiniz.

Iki yolu denemeye değer ancak ikinci bir çok basit ve php_mysql ile çalışır.