Ever wondered what the difference between mysql_fetch_array and mysql_fetch_assoc is? What about mysql_fetch_row? I’ve always used mysql_fetch_array, but, for debugging purposes, here’s what they all do:

  • mysql_fetch_assoc returns an associative array of your field names eg $row[‘field_name_here’]
  • mysql_fetch_row returns a numeric array eg $row[0] returns the first column, $row[1] returns the second column etc. – not a good idea as it makes the code less readable, and if the column order changes, or another column is inserted, the order will break.
  • mysql_fetch_array returns both an associative and a numeric array – supposedly slower.

mysql_fetch_array() returns essentially two arrays, one with a numeric index and one with an associative based key index. Thus, using mysql_fetch_array() without specifying which method you want (either MYSQL_NUM or MYSQL_ASSOC), always returns a double array, which is considerably more inefficient as compared to mysql_fetch_row() or mysql_fetch_assoc().

Read our comment policy before commenting!