سلام دوست عزیز.
این موضوع برمیگرده به دستور SQL شما. در واقع زیاد ربطی به خود php نداره. بنابراین اگر دستور SQL رو هم کامل و جداگانه قرار میدادید بهتر میتونستم کمکتون کنم.
مثلا من الان نمیدونم دقیقا چه جدول و چه ستونهایی رو بکار گرفتید.
بنابراین، دستوری که برای دریافت 18 رکورد آخر لازمه رو با پیشفرضهای خودم مینویسم و شما بعدا میتونید جایگزین کنید.
من فرض میکنم یه table دارم به نام users. این جدول یه ستون userid داره که سیر صعودی داره. یعنی مقدار userid کاربران قدیمیتر کوچیکتره. یک ستون دیگه هم برای عکس پروفایل هست به نام userpp. من اینجا برای حفظ سهولت کار از condition استفاده نمیکنم. حالا اگر قرار باشه که عکس پروفایل 18 نفر اخیر رو استخراج کنیم، باید یه چیزی بنویسیم توی این مایهها:
SELECT userpp FROM users ORDER BY userid DESC LIMIT 18;
دقت کنید که جدیدترین مقادیر userid با گذر زمان و افزایش کاربرها بیشتر میشه. پس ما باید 18 یوزر رو انتخاب کنیم که دارای بزرگترین userid هستن. DESC تعیین میکنه که ترتیب از بزرگتر به کوچیکتر باشه. اگر از ORDER استفاده کنید ولی DESC رو ننویسید، دوباره همون هجده کاربر قدیمی رو نشون میده. چون حالت default برای ORDER حالت ASC (کوچیک به بزرگ) هست.
ضمنا، برای گزینش 18 کابر آخر بهتره علاوه بر userid از یه چیز مطمئنتر هم استفاده کنید تا امکان خطا به صفر برسه. چون بحث زمان مطرحه، میتونید از timestamp به عنوان معیار استفاده کنید، البته در صورتی که داخل دیتابیس ثبت شده باشه.