OK, I used the code Chris provided in his response below and ran it against
the test table below.
mysql> select * from userinfo;
+---------------+---------------+----------------+---------------+----------
----+
| Cust_username | Cust_password | Cust_firstname | Cust_lastname |
Cust_comment |
+---------------+---------------+----------------+---------------+----------
----+
| myusername | mypassword | rich | hutchins | NULL
|
| thisuser | thispass | albert | einstein | NULL
|
| ausername | apassword | Fozzy | Bear | NULL
|
| nother | apassword | Kermit | The Frog | NULL
|
+---------------+---------------+----------------+---------------+----------
----+
The results of running the code against this table are shown below:
Array
(
[0] => myusername
[Cust_username] => myusername
[1] => mypassword
[Cust_password] => mypassword
[2] => rich
[Cust_firstname] => rich
[3] => hutchins
[Cust_lastname] => hutchins
[4] =>
[Cust_comment] =>
)
Array
(
[Cust_username] => myusername
[Cust_password] => mypassword
[Cust_firstname] => rich
[Cust_lastname] => hutchins
[Cust_comment] =>
)
Since I almost always use column names to reference the results from my
queries and not the index number in the array, it would seem to me that
using mysql_fetch_assoc() certainly returns what would be a more succinct
result set. Chris, you've made a believer out of me; I'll start using
mysql_fetch_assoc() for these kinds of queries from now on.
And in the spirit of only retrieving what you need from the database, I
would agree that mysql_fetch_assoc() is the "better" option. However, other
than maybe making my script run a little more slowly, I fail to see how
mysql_fetch_array() is a bad thing. From what I can see, all it does is give
me an additional numerically indexed reference to the data in my result set
and if I choose to ignore it, then that's my choice. If it causes a
significant slowdown in the performance of my script, then it's certainly a
candidate for optimization.
Am I missing something else?
> -----Original Message-----
> From: Chris Boget [mailto:[EMAIL PROTECTED]
> Sent: Monday, October 20, 2003 9:56 AM
> To: Hutchins, Richard; [EMAIL PROTECTED]
> Subject: Re: [PHP-DB] Using two colomns of mysql data as
> key/value pairs
> in arrays
>
>
> > Curious as to why you say you avoid mysql_fetch_array()
> like the plague. I
> > use it frequently and am wondering if there is something
> wrong/not secure
> > when using it or if there is a huge amount of overhead
> associated with its
> > use.
>
> It's not that it's not secure, just that it's bad to use any
> time you aren't using
> specific key references.
>
> Do the following to see the difference and you'll see why
> you'll almost always
> want to use *_assoc() and not *_array():
>
> <?
> /**
> * Edit to suit your DB needs
> **/
> $query = "SELECT * FROM blah";
> $result = mysql( $dbname, $query );
>
> echo '<pre>';
> print_r( mysql_fetch_array( $result ));
>
> echo "\n\n";
> mysql_data_seek( $result, 0 );
> print_r( mysql_fetch_assoc( $result ));
>
> echo '</pre>';
> ?>
>
> Especially if you use the foreach() construct,
> mysql_fetch_array() is bad
> news.
>
> Chris
>
>
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php