Muppet9010 Posted April 4, 2009 Share Posted April 4, 2009 I am trying to extract some data from a MYSQL table to build it into an array. Below is the code i wrote to do this (rather C++ based): PHP Code: GetData($serverid, $medalhistorydateyear, $medalhistorydatemonth) { // search through the list of medals in stats_consolidated and make a new entry for each medal. // make medal name list $wherequery = " WHERE NAME LIKE 'medal_%' AND SERVERID = '-1'"; $result = DB_Query("SELECT NAME FROM " . stats_consolidated . $wherequery); $medalname_list = DB_GetAllRows($result, true); $medal_count = DB_GetRowCount("SELECT NAME FROM " . stats_consolidated . $wherequery); // make server id list $wherequery = " WHERE NAME = '" . $medalname_list[0][NAME] . "'"; $result = DB_Query("SELECT SERVERID FROM " . stats_consolidated . $wherequery); $serverid_list = DB_GetAllRows($result, true); $server_count = DB_GetRowCount("SELECT SERVERID FROM " . stats_consolidated . $wherequery); // make an entry for each server for each medal on the medalname_list $medal_data_count = 0; for($i=0;$i<$medal_count;$i++) { for($j=0;$j<$server_count;$j++) { $tempmedalname = $medalname_list[$i][NAME]; $tempserverid = $serverid_list[$j][sERVERID]; $wherequery = " WHERE NAME = '" . $tempmedalname . "' AND SERVERID = '" . $tempserverid . "'"; $result = DB_Query("SELECT NAME, SERVERID, SortID, DisplayName, DescriptionID, VALUE_INT, VALUE_TXT, PLAYER_ID FROM " . stats_consolidated . $wherequery); $medal_data_temp = DB_GetAllRows($result, true); $medal_data[$medal_data_count] = $medal_data_temp[0]; $medal_data_count++; } } for($k=0;$k<$medal_data_count;$k++) { PrintHTMLDebugInfo( DEBUG_DEBUG, "test", "test data: '" . $medal_data[$k][NAME] . "' : '" . $medal_data[$k][sERVERID] . "' : '" . $medal_data[$k][sortID] . "' : '" . $medal_data[$k][DisplayName] . "' : '" . $medal_data[$k][DescriptionID] . "' : '" . $medal_data[$k][VALUE_INT] . "' : '" . $medal_data[$k][VALUE_TXT] . "' : '" . $medal_data[$k][PLAYER_ID] . "'"); } } The called functions that related to the database calls are below (these where not made by me): PHP Code: function DB_Query($query_string, $bProcessError = true, $bCritical = false) { global $link_id, $querycount; $query_id = mysql_query($query_string,$link_id); if (!$query_id && $bProcessError) DB_PrintError("Invalid SQL: ".$query_string, $bCritical); // For the Stats $querycount++; return $query_id; } function DB_GetAllRows($query_id, $bClose) { if ($query_id != false && $query_id != 1 ) { while ($row = mysql_fetch_array($query_id, MYSQL_ASSOC)) $var[] = $row; if ( $bClose ) DB_FreeQuery ($query_id); if ( isset($var) ) { // Return array return $var; } else return; } } function DB_FreeQuery($query_id) { if ($query_id != false && $query_id != 1 ) mysql_free_result($query_id); } function DB_GetRowCount($query) { // Init num rows $num_rows = -1; if ($result = mysql_query($query)) { $num_rows = mysql_num_rows($result); mysql_free_result ($result); } return $num_rows; } The table is shown below (again not made by me, im confused why there are so many primary keys, unless they are being combined to form one big primary key?): -- -- Table structure for table `stats_consolidated` -- CREATE TABLE IF NOT EXISTS `stats_consolidated` ( `ID` int(11) NOT NULL auto_increment, `NAME` varchar(63) NOT NULL default '', `SERVERID` tinyint(4) NOT NULL default '0', `Time_Year` mediumint(9) NOT NULL default '0', `Time_Month` tinyint(4) NOT NULL default '0', `SortID` int(11) NOT NULL default '0', `DisplayName` varchar(255) NOT NULL default '', `DescriptionID` varchar(255) NOT NULL default '0', `VALUE_INT` int(11) NOT NULL default '0', `VALUE_TXT` varchar(255) NOT NULL default '', `PLAYER_ID` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`ID`,`NAME`,`SERVERID`,`Time_Year`,`Time_Month`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Table to hold total values and medals' AUTO_INCREMENT=204 ; -- -- Dumping data for table `stats_consolidated` -- INSERT INTO `stats_consolidated` (`ID`, `NAME`, `SERVERID`, `Time_Year`, `Time_Month`, `SortID`, `DisplayName`, `DescriptionID`, `VALUE_INT`, `VALUE_TXT`, `PLAYER_ID`) VALUES (169, 'medal_pro_pistol', -1, 0, 0, 5, 'Pistol', 'medal_pro_pistol', 12, 'Kills', 1272946142), (168, 'medal_pro_sniper', -1, 0, 0, 4, 'Sniper', 'medal_pro_sniper', 16, 'Kills', 1272946142), (167, 'medal_pro_knifekills', -1, 0, 0, 3, 'Knife Kills', 'medal_pro_knifekills', 7, 'Kills', 2791352847), (166, 'medal_pro_explosivekiller', -1, 0, 0, 2, 'Explosive Killer', 'medal_pro_explosivekiller', 9, 'Kills', 1092673307), (196, 'medal_anti_whiner', 1, 0, 0, 4, 'Whiner', 'medal_anti_whiner', 2, 'Whining chats', 503140616), (195, 'medal_anti_nademagnet', 1, 0, 0, 3, 'Nade Magnet', 'medal_anti_nademagnet', 8, 'Deaths', 1234669041), (165, 'medal_pro_headshot', -1, 0, 0, 1, 'Headshot', 'medal_pro_headshot', 14, 'Kills', 1234669041), (164, 'medal_pro_killer', -1, 0, 0, 0, 'Killer', 'medal_pro_killer', 89, 'Kills', 1234669041), It returns all fields bar the PLAYER_ID field which just returns blank, but i dont know why. If i run the same query directly into the SQL box on PHP MyAdmin then it does return the PLAYER_ID field, so is something about the functions i've used or some other setting i guess test data: 'medal_pro_explosivekiller' : '-1' : '2' : 'Explosive Killer' : 'medal_pro_explosivekiller' : '9' : 'Kills' : '' test data: 'medal_pro_explosivekiller' : '1' : '2' : 'Explosive Killer' : 'medal_pro_explosivekiller' : '9' : 'Kills' : '' test data: 'medal_pro_knifekills' : '-1' : '3' : 'Knife Kills' : 'medal_pro_knifekills' : '7' : 'Kills' : '' test data: 'medal_pro_knifekills' : '1' : '3' : 'Knife Kills' : 'medal_pro_knifekills' : '7' : 'Kills' : '' Link to comment https://forums.phpfreaks.com/topic/152592-solved-mysql-php-not-sure-which-side-is-the-problem/ Share on other sites More sharing options...
fenway Posted April 5, 2009 Share Posted April 5, 2009 I'm sorry, TLDR -- what's the question? Link to comment https://forums.phpfreaks.com/topic/152592-solved-mysql-php-not-sure-which-side-is-the-problem/#findComment-801648 Share on other sites More sharing options...
Muppet9010 Posted April 5, 2009 Author Share Posted April 5, 2009 the bottum bit: It returns all fields bar the PLAYER_ID field which just returns blank, but i dont know why. If i run the same query directly into the SQL box on PHP MyAdmin then it does return the PLAYER_ID field, so is something about the functions i've used or some other setting i guess. Link to comment https://forums.phpfreaks.com/topic/152592-solved-mysql-php-not-sure-which-side-is-the-problem/#findComment-801772 Share on other sites More sharing options...
fenway Posted April 6, 2009 Share Posted April 6, 2009 That means there's something wrong with your db class -- but apparently it's not yours. Link to comment https://forums.phpfreaks.com/topic/152592-solved-mysql-php-not-sure-which-side-is-the-problem/#findComment-801977 Share on other sites More sharing options...
Muppet9010 Posted April 8, 2009 Author Share Posted April 8, 2009 turned out that it needed to be 'PLAYER_ID' instead of just PLAYER_ID in the php array name. All the others worked fien without the '. wierd, but it works now Link to comment https://forums.phpfreaks.com/topic/152592-solved-mysql-php-not-sure-which-side-is-the-problem/#findComment-804492 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.