# پایگاه‌های داده > سایر پایگاه‌های داده > MySQL >  توضیح درمورد تابع mysql_fetch_array

## poozhan

سلام
خسته نباشید
کسی میتونه یه توضیح نسبتا کاملی در مورد تابع های زیر بده توی نتگشتم ولی چیزی که بدردم بخوره پیدا نکردم
cmysql_fetch_array
mysql_fetch_assoc

----------


## mrrajabi

اینا مقدار برگشتیشون یک آرایه هست که نام هر خانه آرایه نام همان فیلد جدول شما است. fetch_array شامل اندیس های عدد و نام فیلد می باشد در حالیکه fetch_assoc آرایه انجمنی هست, یعنی فقط حاوی نام فیلد است.
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
    printf ("ID: %s  Name: %s", $row[0], $row["name"]);
}

mysql_free_result($result);
?>  

<?php

$conn = mysql_connect("localhost", "mysql_user", "mysql_password");

if (!$conn) {
    echo "Unable to connect to DB: " . mysql_error();
    exit;
}
  
if (!mysql_select_db("mydbname")) {
    echo "Unable to select mydbname: " . mysql_error();
    exit;
}

$sql = "SELECT id as userid, fullname, userstatus 
        FROM   sometable
        WHERE  userstatus = 1";

$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    exit;
}

// While a row of data exists, put that row in $row as an associative array
// Note: If you're expecting just one row, no need to use a loop
// Note: If you put extract($row); inside the following loop, you'll
//       then create $userid, $fullname, and $userstatus
while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"];
    echo $row["fullname"];
    echo $row["userstatus"];
}

mysql_free_result($result);

?>

----------


## poozhan

ممنون
توضیح کاملی بود
ولی یکم دیگه مشکل دارم
فرض کنید ما یه جدول داریم 
=============
| user | pass |
=============
| mojtaba |12345|
=============
ali | 25412 |
=============
|mahdi |...... |
=============

حالا میخواستم اگه مشکلی نیست یه توضیحی برام بدید 
ما با دستور fetch_array این جدول رو داخل یک آرایه میریزیم درسته؟
بعد من گیج شدم سر اینکه حلقه while چطوری داخل این ارایه میچرخه و عملیات رو انجام میده
چون من با این حلقه یکم مشکل دارم اگه میشه یکم توضیح بدید
و اینکه این کار رو میشه با حلقه for انجام داد؟
ممنون میشم

----------


## afi_program

وقتی کوئری زدی حاصل رو توی یک متغیر میریزی .ازتابع mysql_num_array() با پارامتر همون متغیر قبلی فراخوانی کن حالا یک حلقه به تعداد برگشتی از این تابع داشته باش و هربار حاصل تابعmysql_fetch_array با مقدار برگشتی کوئری توی یک متغیردیگه که در اصل یک آرایه است بریز حالا مقادیر مربوطه با حفظ ترتیب توی دیتابیس در اندیس های آرایه هستن(اندیس ها از 0 شروع میشن).
موفق باشی

----------


## poozhan

> وقتی کوئری زدی حاصل رو توی یک متغیر میریزی .ازتابع mysql_num_array() با پارامتر همون متغیر قبلی فراخوانی کن حالا یک حلقه به تعداد برگشتی از این تابع داشته باش و هربار حاصل تابعmysql_fetch_array با مقدار برگشتی کوئری توی یک متغیردیگه که در اصل یک آرایه است بریز حالا مقادیر مربوطه با حفظ ترتیب توی دیتابیس در اندیس های آرایه هستن(اندیس ها از 0 شروع میشن).
> موفق باشی


ممنون
ولی یا من خیلی گیجم یا نمیدونم دیگه چی
اگه میشه سوال دوم منو یک بار دیگه بخونید شاید یه پست جدید بزنید که شاید من بهتر بفهمم
ممنون میشم

----------


## afi_program

با توجه به چیزی که من گفتم از for استفاده میشه(فرقی نمیکنه از چه حلقه ای).
$query="کوئری مربوط به کاری که میخوا انجام بدی'";

    $result=ExecuteQuery($query);
$num=mysql_num_rows($result);

  for($i=1;$i<=$num;$i++){
$row = mysql_fetch_array($result);
}
امیدوارم متوجه حرف همدیگه شده باشیم.
موفق باشی

----------


## afi_program

حالا توی متغیر rowاگه اندیس را برابر 0 یا user (اگه کوئری توی جدول اول انجام شده باشه و همه مقادیر را select کرده باشی)قرار بدی مقادیر داده ها موجود در user توی دیتابیس را بهت نشون میده.
موفق باشی

----------


## poozhan

> حالا توی متغیر rowاگه اندیس را برابر 0 یا user (اگه کوئری توی جدول اول انجام شده باشه و همه مقادیر را select کرده باشی)قرار بدی مقادیر داده ها موجود در user توی دیتابیس را بهت نشون میده.
> موفق باشی


خیلی ممنون داداش
توضیحتون خیلی خوب بود فکر کنم دیگه مشکلم حل شده باشه 
بازم ممنون

----------

