PDA

View Full Version : بدست آوردن آی دی insert شده



ayub_coder
یک شنبه 07 اسفند 1390, 09:39 صبح
سلام دوستان
ما یه تیبل داریم
f_id
f_name
f_pic

که دائما توش داده اضافه میشه و f_id هم auto increment هست.
چطور میشه آخرین f_id که با همون دستور insert اضافه شده رو بدست آورد
یعنی چی؟ یعنی من یه دستور INSERT بکار بردم
f_id که با همین دستور insert اضافه شده رو می خوام.چون در آن واحد ممکنه چندتا رکورد وارد دیتابیس بشه.

ayub_coder
یک شنبه 07 اسفند 1390, 09:46 صبح
mysql_insert_id()

آیا این قابل اعتماده؟ اگه در یک لحظه چند تا رکورد تو دیتابیس ثبت بشه درست کار میکنه؟

masoud_tamizy
یک شنبه 07 اسفند 1390, 10:18 صبح
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');

mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d\n", mysql_insert_id());
?>

تستش کن

ayub_coder
دوشنبه 08 اسفند 1390, 08:02 صبح
mysql_insert_id()

آیا این قابل اعتماده؟ اگه در یک لحظه چند تا رکورد تو دیتابیس ثبت بشه درست کار میکنه؟

در تراکنش های زیاد جواب میده؟

masoud_tamizy
دوشنبه 08 اسفند 1390, 13:03 عصر
مطمئن نیستم ولی فکر می کنم که جواب بده
راه حل مطمئنی که می تونم بهت پیشنهاد کنم که صددرصد هم جواب می ده اینه که :
یه SP بساز و تو اون یه تراکنش درس کن ، حالا هروقت که یک مقدار جدید درج می کنی توی همون روال آخرین شناسه رو بردار و بفرست بیرون . اینجوری هم عملیات درج به درستی انجام شده و هم بلافاصله پشت سرش آخرین شناسه خودافزایشی رو بدست اوردی :لبخندساده:
آخرین شناسه درج شده رو هم می تونی با @@last_insert_id بدست بیاری .
درپناه حق

MMSHFE
دوشنبه 08 اسفند 1390, 19:31 عصر
البته اگه موقع اتصال به MySQL، لینک ایجادشده رو توی متغیر ذخیره کنید و از همون لینک توی دستور mysql_query برای درج اطلاعات و همچنین تابع mysql_insert_id استفاده کنید، ID آخرین رکوردی که با همون اتصال ایجاد شده رو به شما اعلام میکنه. درنتیجه در تراکنش های زیاد هم نسبتاً قابل اعتماد هست. موفق باشید.