۴ شعبان زاده
سوال درباره mysqli_result
جامعه پی اچ پی ایجاد شده در ۱۴ بهمن ۱۴۰۱

سلام . وقت شما بخیر

وقتی کدهای زیر را اجرا می‌کنم حتما باید حلقه while قبلی را کامنت کنم ، به کد زیر توجه بفرمایید

$sql2 = "select fullname , id from people where id < 10";
$result2 = $mysqli -> query($sql2);
 
// while($row = $result2 -> fetch_assoc() ){ //The order of the columns is based on the query we specified
//     echo "
";
//     print_r($row);
//     echo "
";
// } //mysqli_result::fetch_array -- mysqli_fetch_array — //  Fetch the next row of a result set as an associative, a numeric array, or both while($row1 = $result2->fetch_array()){     echo "
";
    print_r($row1);
    echo "
"
; }   echo "
"
; while($row2 = $result2 -> fetch_object()){     echo "
";
    print_r($row2);
    echo "
"
; }

در کد فوق در صورتی که تابع fetch_array را کامنت نکنم تابع fetch_object خروجی مورد انتظار که یک stdClass است را نشان نمی‌دهد .

سوالم اینست که آیا وقتی fetch_array یا توابع دیگر از کلاس result اجرا می‌شود مقادیر برگشتی در کلاس result بافر شده و باقی می‌ماند؟ چون من نام متغیر‌ها را هم عوض کردم و در حلقه دوم row2 گذاشتم اما باز هم تابع fetch_object کار نکرد.

با احترام

سلام علی عزیز

این حلقه هاتون بی معنی و تداخل انداز هست.

چون یک حلقه بینهایت شکل میگیره و پایان پیدا نمیکنه که به حلقه بعدی برسه.

احمدرضا فاطمی کیا ۱۴ بهمن ۱۴۰۱، ۱۹:۴۶

سلام احمد رضا جان .

هر کدام از حلقه‌ها به تنهایی کار می‌کنه و اطلاعات رو بدرستی بر می‌گردونه . اما وقتی هر دو تاش هست درست جواب نمیده .

فکر کنم اگر close کنم درست بشه


شعبان زاده ۱۴ بهمن ۱۴۰۱، ۲۰:۰۰

عرض کردم خدمتت

حلقه بینهایت میشه...و به لاین‌های بعدی نمیره.

باید یک شرط بزاری و حلقه رو محدود کنی و به قول خودت کلوز بشه.

بهترین پاسخ
احمدرضا فاطمی کیا ۱۴ بهمن ۱۴۰۱، ۲۰:۰۸

خیلی ممنون احمد جان . لطف کردید.

شعبان زاده ۱۴ بهمن ۱۴۰۱، ۲۱:۱۱