PDA

View Full Version : fetch کردن آرایه



minoojoon
چهارشنبه 02 فروردین 1391, 17:08 عصر
سلام دوستان، با چه دستوری چند رکورد از دیتابیس رو که شرط خاصی رو دارند بگیرم ؟ با دستور fetch_array و حلقه ی While رو نمیخوام ، دستوری رو لازم دارم که یک باره کل رکورد ها رو بگیره.

soroush.r70
چهارشنبه 02 فروردین 1391, 17:33 عصر
function hadis()
{
$res=mysql_query("select * from `tbl_hadis` ");
$row=mysql_fetch_assoc($res);
echo'
<li class="news-item">'.$row["text"].'</li>
';
}


الان تو این دستور فقط یک بار از جدولم فراخوانی می شه به جای fetch_array از mysql_fetch_assoc استفاده کردم می گن بهینه تره

minoojoon
چهارشنبه 02 فروردین 1391, 17:58 عصر
function hadis()
{
$res=mysql_query("select * from `tbl_hadis` ");
$row=mysql_fetch_assoc($res);
echo'
<li class="news-item">'.$row["text"].'</li>
';
}


الان تو این دستور فقط یک بار از جدولم فراخوانی می شه به جای fetch_array از mysql_fetch_assoc استفاده کردم می گن بهینه تره

این دستورم فقط یک رکورد رو میگیره، دستوری می خوام که چند رکورد رو بگیره.

MMSHFE
چهارشنبه 02 فروردین 1391, 18:45 عصر
دوست عزیز، یکباره نمیشه همه اطلاعات رو استخراج کنید چون خروجی mysql_query یک Resource هست که به محلی از حافظه اشاره میکنه که جدول استخراج شده توی اون قرار گرفته و باید با fetchکردن، رکوردها رو استخراج کنید. درصورت تمایل، میتونید با mysql_result بدون fetchکردن تک تک، هر فیلد از هر رکوردی رو استخراج کنید ولی باید دقت کنید که این روش خیلی کندتر از fetchکردن هست. ضمناً اینکه گفتین mysql_fetch_assoc بهینه تر از mysql_fetch_array هست هم صحیحه چون اولی فقط با اندیس رشته ای استخراج میکنه ولی دومی هم با اندیس رشته ای (نام فیلدها) و هم با اندیس عددی (شماره ترتیب فیلدها) یعنی حافظه دوبرابر مصرف میکنه. کافیه یکبار با print_r خروجی دو تابع رو نمایش بدین تا متوجه تفاوتشون بشین. درواقع mysql_fetch_array ترکیبی از mysql_fetch_assoc و mysql_fetch_row هست. تابع دیگری هم بنام mysql_fetch_object هست که خروجی اون یک شئ برای رکورد هست و فیلدها، عناصر اون شئ خواهند بود که این روش برای مقاصد شئ گرا مناسب هست. موفق باشید.