PDA

View Full Version : مشکل با فانکشن mysql_insert_id



tick-tock
چهارشنبه 28 اسفند 1392, 20:31 عصر
با سلام .
با یه مشکلی در مورد کار با تابع mysql_insert_id رو به رو شدم از دوستان عزیز خواهشمندم که کمکم کنند .
دوتا table دارم به اسم های sale و img من میخوام ID پستی که کاربر در حال ارسال اون هست را دریافت کنم و در table دیگه (img) ذخیره کنم . ولی مشکل اینجاست که من چندتا عکس همزمان آپلود میکنم ولی فقط برای عکس اول ID مربوطه در جدول sale درست درج میشه .
برای عکسای دیگه id قبلی همون جدول را نشون میده .

نمیدونم اصلا استفاده از این تابع در اینجا درست است یا نه و اگه آره مشکل از کجاست ؟ تصویر مربوط به جدول img را قرار دادم .



117162

desatir7316
چهارشنبه 28 اسفند 1392, 21:05 عصر
ساختار جدول هاتو بزن ببینم چین؟

tick-tock
چهارشنبه 28 اسفند 1392, 22:02 عصر
جدول sale:
117166117165

جدول img :

117169117168

desatir7316
چهارشنبه 28 اسفند 1392, 22:56 عصر
اینا چیه؟
ساختارشونو بذارید
دستور create که توش realtionها هم مشخص کردی

sh.n.n786
پنج شنبه 29 اسفند 1392, 14:18 عصر
درود و ...
دوست عزیز شما باید از موتور InnoDB استفاده کنید بعد از Insert هم باید تابع را صدا بزنید از MYSQL استفاده نکنید از MYSQLI استفاده کنید.

MMSHFE
پنج شنبه 29 اسفند 1392, 14:27 عصر
مشکل اصلاً از این چیزها نیست! احتمالاً شما کدی شبیه این نوشتین:


foreach($_FILES['photos'] as $photo) {
$id = mysql_insert_id();
mysql_query("INSERT INTO `images` VALUES (NULL, '{$id}','{$photo['name']}', ...)");
}

خوب طبیعیه که این کد نباید درست کار کنه چون هربار که mysql_insert_id رو صدا میزنید، آخرین id که بطور خودکار روی اون اتصال MySQL تولید شده رو به شما میده و وقتی یک رکورد توی جدول images درج شد، این دستور id اون رکورد رو میده نه id آخرین پستی که درج شده بوده! شما باید یکبار از این دستور قبل از حلقه استفاده کنید و داخل حلقه از همون متغیر استفاده کنید و دوباره mysql_insert_id رو صدا نزنید.