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().


If you found any value in this post, agree, disagree, or have anything to add - please do. I use comments as my #1 signal for what to write about. Read our comment policy before commenting! Comments such as "Thank you!", "Awesome!", "You're the man!" are either marked as spam or stripped from URL.

2 thoughts on “Quick Tip: mysql_fetch_ Commands

    1. Yes. It’s faster with a few milliseconds than mysql_fetch_array and equal in speed with mysql_fetch_row as it does the same thing, but, you know, every millisecond counts.

Leave a reply