Difference between mysql_fetch_array and mysql_fetch_row?

This is a simple question for PHP users. The reason I couldn't get the the exact difference between mysql_fetch_array() and mysql_fetch_row() in PHP is that I had been working much with Java.


Before I post this question here, I got some answers from Google but I found they're somewhat confusing. Some of the links I found on the internet are as follows.

Answer 1

Answer 2

Answer 3

Answer 4


I couldn't get the exact idea from the above answers. So actually what is the exact difference between them?


Solution 1:

Many of the php programming newbies get confused about mysql_fetch_array(), mysql_fetch_row(), mysql_fetch_assoc() and mysql_fetch_object() functions, but all of these functions performs a similar process.

Let us create a table “tb” for clear example with three fields “id”, “username” and “password”

Table: tb

Insert a new row into the table with values 1 for id, tobby for username and tobby78$2 for password

enter image description here

db.php

<?php
$query=mysql_connect("localhost","root","");
mysql_select_db("tobby",$query);
?>

mysql_fetch_row()

Fetch a result row as an numeric array

<html>
<?php
include('db.php');
$query=mysql_query("select * from tb");
$row=mysql_fetch_row($query);
echo $row[0];
echo $row[1];
echo $row[2];
?>
</html>

Result

1 tobby tobby78$2

mysql_fetch_object()

Fetch a result row as an object

<html>
<?php
include('db.php');
$query=mysql_query("select * from tb");
$row=mysql_fetch_object($query);
echo $row->id;
echo $row->username;
echo $row->password;
?>
</html>

Result

1 tobby tobby78$2

mysql_fetch_assoc()

Fetch a result row as an associative array

<html>
<?php
include('db.php');
$query=mysql_query("select * from tb");
$row=mysql_fetch_assoc($query);
echo $row['id'];
echo $row['username'];
echo $row['password'];
?>
</html> 

Result

1 tobby tobby78$2

mysql_fetch_array()

Fetch a result row as an associative array, a numeric array and also it fetches by both associative & numeric array.

<html>
<?php
include('db.php');
$query=mysql_query("select * from tb");
$row=mysql_fetch_array($query);
echo $row['id'];
echo $row['username'];
echo $row['password'];

<span style="color: #993300;">/* here both associative array and numeric array will work. */</span>

echo $row[0];
echo $row[1];
echo $row[2];

?>
</html>

Result

1 tobby tobby78$2

Solution 2:

The documentation is pretty clear on this, have you looked at it ?

mysql_fetch_array ( resource $result [, int $result_type = MYSQL_BOTH ] )

Returns an array of strings that corresponds to the fetched row, or FALSE if there are no more rows. The type of returned array depends on how result_type is defined. By using MYSQL_BOTH (default), you'll get an array with both associative and number indices. Using MYSQL_ASSOC, you only get associative indices (as mysql_fetch_assoc() works), [by] using MYSQL_NUM, you only get number indices (as mysql_fetch_row() works).

mysql_fetch_row ( resource $result )

Returns an numerical array of strings that corresponds to the fetched row, or FALSE if there are no more rows.

mysql_fetch_row() fetches one row of data from the result associated with the specified result identifier. The row is returned as an array. Each result column is stored in an array offset, starting at offset 0.

In summary

mysql_fetch_array( $result, MYSQL_ASSOC ) = mysql_fetch_assoc( $result ) mysql_fetch_array( $result, MYSQL_NUM ) = mysql_fetch_row( $result )

And

mysql_fetch_array ( $result ) = mysql_fetch_assoc( $result ) + mysql_fetch_row( $result )