رفع خطای PHP Warning: result set(s) not freed در MySQL

خطای result set not freed چیست؟

خطای PHP Warning: Unknown: 1 result set(s) not freed هنگام اجرای اسکریپت‌های PHP که از MySQL استفاده می‌کنند رخ می‌دهد. این خطا نشان‌دهنده عدم آزادسازی نتایج کوئری پس از استفاده است.

دلیل خطا

وقتی یک کوئری MySQL اجرا می‌شود و نتیجه در متغیری ذخیره می‌شود اما پس از استفاده mysql_free_result() فراخوانی نمی‌شود، PHP این هشدار را نمایش می‌دهد. این مشکل به‌خصوص در کدهای قدیمی PHP که از توابع mysql_* (منسوخ‌شده) استفاده می‌کنند رایج‌تر است.

روش‌های رفع

روش ۱: استفاده از mysql_free_result

پس از هر کوئری، نتیجه را آزاد کنید:

$result = mysql_query("SELECT * FROM table");
// استفاده از نتایج...
mysql_free_result($result);

روش ۲: مهاجرت به MySQLi یا PDO

توابع mysql_* از PHP 7.0 حذف شده‌اند. از MySQLi یا PDO استفاده کنید:

$mysqli = new mysqli("localhost", "user", "pass", "db");
$result = $mysqli->query("SELECT * FROM table");
// استفاده از نتایج...
$result->free();

روش ۳: غیرفعال کردن نمایش Warning

اگر نمی‌توانید کد را تغییر دهید، Warning را موقتاً مخفی کنید:

error_reporting(E_ALL & ~E_WARNING);

یا در php.ini:

error_reporting = E_ALL & ~E_WARNING

توجه: این راه‌حل موقتی است و مشکل اصلی را حل نمی‌کند.

پیشگیری

همیشه نتایج کوئری را آزاد کنید. از توابع مدرن MySQLi یا PDO استفاده نمایید. کدهای قدیمی را به PHP 8.x مهاجرت دهید.

هاست وردپرس میهن هاستینگ با PHP 8.x بهینه‌شده ارائه می‌شود. اگر سرور مجازی دارید، کانفیگ سرور شامل بهینه‌سازی PHP و MySQL نیز می‌شود.

🚀 هاست با PHP بهینه

PHP 8.x بهینه با MySQLi و PDO آماده.

مشاهده هاست وردپرس ←

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

متن نظر
نام*:
رایانامه*:
وب سایت / وبلاگ: