View Full Version : The difference between mysql_fetch_array and $db->fetch_array?
Attilitus
01-21-2007, 12:49 PM
I have a script which works perfectly with mysql_fetch_array($result), however, when switching it to $db->fetch_array($result) it does not work. It does not give an error, it simply does not return a result.
Is there something fundamentally different between vbulletin's database class fetch_array and mysql_fetch_array?
(All other database class functions are working just fine... I have query_read within the same function and it works perfectly)
thincom2000
01-21-2007, 05:53 PM
I read somewhere that $db->fetch_array() uses fewer resources than mysql_fetch_array() and mysql_fetch_assoc(), but I looked at the code in class_core.php recently, and I think I remember seeing that it was merely a difference of semantics.
Then again, I'm no expert. :)
Guest190829
01-21-2007, 05:56 PM
It is simply a wrapper to the mysql_fetch_array function. If you are programming a vBulletin modification, you should use $db->fetch_array() to follow vBulletin's coding standards.
Can you post the two lines of code with mysql_fetch_array and $db->fetch_array?
Attilitus
01-21-2007, 07:09 PM
I actually was able to find a solution by using $db->fetch_row. The problem was that I was using numeric keys for certain result sets (which was something I would have prefered not to change because it was quite useful.)
Oddly enough $db->fetch_array does not appear to be fully inter-changable with mysql_fetch_array in this regard. But as I said $db->fetch_row worked perfectly in those specific cases.
Kentaurus
01-21-2007, 07:10 PM
Abstraction. Since $db->fetch_array is wrapper, if you changed your database, mysql version, implementation details or wanted to add extra behaviour, $db->fetch_array provides a way to do so, since all the code would use an abstraction and not the direct mysql code.
Meaning... it would be a best practice to use $db->fetch_array if you are coding for Vbulletin
I actually was able to find a solution by using $db->fetch_row. The problem was that I was using numeric keys for certain result sets (which was something I would have prefered not to change because it was quite useful.)
Oddly enough $db->fetch_array does not appear to be fully inter-changable with mysql_fetch_array in this regard.
It's actually the equivalent of calling:
mysql_fetch_array($result, MYSQL_ASSOC)
and not plain mysql_fetch_array
Attilitus
01-21-2007, 07:13 PM
Ha ha... I was never considering NOT using the vbulletin database class. I was just trying to find the right parameter that I needed. Certainly it is alright to use vbulletin's databaseclass function $db->fetch_row. Correct?
Kentaurus
01-21-2007, 08:14 PM
Correct :) Or rename the columns in your query. Both strategies are fine.
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.