الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استفسار افضلية Mysql_fetch_assoc او Mysql_fetch_array

بدأه ojopc في 4 سبتمبر 2008 · 6 رد · 4,313 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحباً يا شباب

من الناحية النظرية الدالتين تعمل بنفس الطريقة، ولا يوجد سوى فروقات بسيطة.

لكن من الناحية العملية أيهما أفضل؟

وأيهما أسرع من حيث الأداء وجلب المعلومات ووضعها في مصفوفة؟

--------------------

اخيراً:

  function fetcharray($query, $fetchassoc = 0)
  {
	$this->query = $query;
	if($this->query) {
	  return ($fetchassoc) ? mysql_fetch_assoc($this->query) : mysql_fetch_array($this->query);
	}
  }

مدى صحة هذا الكود وبالذات

return ($fetchassoc) ? mysql_fetch_assoc($this->query) : mysql_fetch_array($this->query);

ماذا يعني؟

شكراً للجميع

#2

اولا ... افرض أن لدينا قاعدة بيانات test بها جدول بإسم data

لدينا الكود التالي يقوم بالإتصال بقواعد البيانات ويسترجع البيانات التي لدينا بالجدول

table data have id and name fields

$conn=mysql_connect('localhost','root','');
  $mysql_select_db('test');
  $result=mysql_query('SELECT * FROM data');

المتغير result هنا عبارة عن مصفوفة به البيانات المخزنة بالجدول

اولا ... Mysql_fetch_array

تستخدم هذه الدالة لإستخراج البيانات ب 3 طرق ..

1-

$row(mysql_fetch_array($result,MYSQL_NUM)

بإستخدام الباراميتر MYSQL_NUM ستستخرج البيانات كمصفوفة عددية مثل $row[0],$row[1]...

2-

$row(mysql_fetch_array($result,MYSQL_ASSOC)

بإستخدام الباراميتر MYSQL_Assoc ستستخرج البيانات كمصفوفة ترابطية مثل $row[id],$row[name]...

3-

$row(mysql_fetch_array($result,MYSQL_BOTH)

هنا سينتج لدينا مصفوفة عددية واخرى ترابطية

وهذه الحالة تعتبر default في حال استخدام Mysql_fetch_array()

ثانيا ....Mysql_fetch_assoc

فهي بنفس مفهوم $row(mysql_fetch_array($result,MYSQL_ASSoC)

واعتقد من ناحية السرعة أفضل Msql_fetch_assoc لأن استخدام

defult Msql_fetch_array يرجع كما قلنا نوعين وهذا يحتاج لذاكرة بعكس

Msql_fetch_assoc

تم تعديل هذه المشاركة بواسطة mana80 في 4 سبتمبر 2008 في 21:30

I Say Nothing

#3

مشكورة الأخت mana88 على المعلومات المفيدة حقاً ...

و لكن أعتقد ان الفرق لن يظهر إلا في حالة الضغط على السيرفر و قواعد البيانات الكبيرة

#4

الفرق بسيط

Fetch Array ترجع مصفوفه ترابطيه وتكون مفاتيح (المصفوفه) بأسماء الاعمده فيها ,associative array وايضا Array بمفاتيح رقميه اي مصفوفه عادي

fetch_assoc ترجع مصفوفه ارتباطيه وتكون مفاتيح (المصفوفه) بأسماء الاعمده فيها

#5

طيب يا شباب انا كل هذا الأمر واضح عندي،، الآن ويظهر ان الفرق بسيط أيضاً يعني ما في مشكلة كبيرة

طيب وهذا الكود هل هو صحيح:

return ($fetchassoc) ? mysql_fetch_assoc($this->query) : mysql_fetch_array($this->query);

وماذا يمكن ان اضيف لكي يتحسن أكثر..

#6
function fetcharray($query, $fetchassoc = 0)
  {
	$this->query = $query;
	if($this->query) {
	  return ($fetchassoc) ? mysql_fetch_assoc($this->query) : mysql_fetch_array($this->query);
	}
  }

$this->query تشير إلى عملية تمت كعملية Select,Delete.........

عبارة IF تعني إذا تمت هذه العملية السابقة فستكون القيمة صحيحة وينفذ عبارة Return .

أما العبارة الأخيرة فقيمة المتغير ستحدد حسب قيمته بمعنى :

قيمته الحالية تساوي 0 وتعتبر قيمة خاطئة False فلذلك هذا المتغير ستكون قيمته العبارة mysql_fetch_array($this->query)

هذه العملية يمكن أن تفسرها بطريقة أخرى وهي :

If ($fetchassoc)
  $fetchassoc = mysql_fetch_assoc($this->query) 
else
  $fetchassoc = mysql_fetch_array($this->query)

تم تعديل هذه المشاركة بواسطة mana80 في 7 سبتمبر 2008 في 00:14

I Say Nothing

#7

صح.. انا الآن فهمت العملية بشكل مضبوط كتير شكرا يا mana80

ولكني اعتقد ان الكود السابق اقبل من حيث أسطرة الكتابة ولذلك اذا ما في تاثير راح ابقى عليه

مواضيع مشابهة