ID: 45237
Updated by: johannes@php.net
Reported By: phpbugs at phormix dot com
Status: Bogus
Bug Type: MySQL related
Operating System: FreeBSD
PHP Version: 5.2.6
New Comment:
var_dump, not vardump, sorry for that
Previous Comments:
------------------------------------------------------------------------
[2008-06-11 13:40:28] johannes@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
you're using left joins, therefore you get NULL values. Use vardump()
instead of print_r() to get the the information.
------------------------------------------------------------------------
[2008-06-11 13:34:58] phpbugs at phormix dot com
Please note that the "expected" result should actually be:
Array ( [0] => 22768 [userid] => 22768 [1] => 22768 [userid2] => 22768
[2] =>
10 [reputation] => 10 [3] => jdoe [username] => jdoe [4] ... etc
------------------------------------------------------------------------
[2008-06-11 13:33:54] phpbugs at phormix dot com
Description:
------------
mysql_fetch_assoc does not return certain values attached to their
named items in the array. mysql_fetch_array shows that the numbered
entries definitely have values attached to them, but for some reason
these are not being attached to the appropriate names.
For example, as below. The first field is "userid"
array[0] returns a value
array[userid] does not
however, when adding code to the query "userid as userid2"
array[0] returns a value
array[userid] does not
array[1] returns a value
array[userid2] returns a value
Reproduce code:
---------------
$myquery = "SELECT user.userid, user.userid as userid2, reputation,
username, usergroupid, birthday_search, email, parentemail,(options & 8)
AS coppauser, homepage, icq, aim, yahoo, msn, skype, signature,
usertitle, joindate, lastpost, posts, ipaddress, lastactivity,
userfield.* FROM user LEFT JOIN userfield AS userfield
ON(userfield.userid = user.userid) LEFT JOIN usertextfield AS
usertextfield ON(usertextfield.userid = user.userid) WHERE 1=1 AND
user.username LIKE '%jdoe%' ORDER BY username ASC LIMIT 0, 50";
$user_r = mysql_query($myquery);
print_r( mysql_fetch_array($user_r) );
Expected result:
----------------
Array ( [0] => 22768 [userid] => [1] => 22768 [userid2] => 22768 [2] =>
10 [reputation] => 10 [3] => jdoe [username] => jdoe [4] ... etc
Actual result:
--------------
Array ( [0] => 22768 [userid] => [1] => 22768 [userid2] => 22768 [2] =>
10 [reputation] => 10 [3] => jdoe [username] => jdoe [4] ... etc
(please note the missing userid)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=45237&edit=1