As a youth, Graham befriended future college teammate Adrian Oliver. The two played basketball together throughout school and competed on the same Amateur Athletic Union (AAU) team while in high school.
As a junior at Ripon High School in 2004–05, Graham averaged 15.9 points, 7.3 rebounds and 5.5 assists per game. In November 2005, he signed a National Letter of Intent to play college basketball for San Jose State University.
As a senior at Ripon in 2005–06, Graham averaged 15.6 points, 7.5 rebounds, 6.0 assists and 3.5 steals per game. His points, rebounds, assists and blocked-shot averages led the league. He was a two-time league MVP in high school, the Manteca Bulletin's "player of the year" and a Division IV all-state selection.
After redshirting the 2006–07 season, Graham joined the San Jose State Spartans as a freshman for the 2007–08 season. He averaged 2.9 assists per game in 2007–08, becoming the first San Jose State freshman in 13 years to lead the team in assists. He also averaged 10.7 points, 2.4 rebounds and 1.5 steals in 26 games (25 starts). He played more minutes than any 2007–08 freshman in the Western Athletic Conference and led the Spartans in average minutes played per game (31.96). He also set a San Jose State freshman single-game scoring record with 29 points against Hawaii on January 5, 2008.
Prior to the start of his sophomore season, coach George Nessman felt that Graham had "a chance to develop into a major difference-maker." In 2008–09, Graham was the only San Jose State player to play and start in all 30 games. He led the team in assists (142) and steals (51), and became the first Spartan in nine seasons to record 100 assists in a season. He was also the first San Jose State player in 12 seasons to record at least 100 assists and 100 rebounds (112) in a season. He finished the season with averages of 8.3 points, 3.7 rebounds, 4.7 assists and 1.7 steals per game.
As a junior in 2009–10, Graham was one of two Spartans to start in all 31 games, and he had his best season in assists (149), rebounding (5.1 rpg) and field goal percentage (47.0). On November 28, 2009, he made the game-winning basket with 11 seconds to go against Pacific. He finished the season with averages of 9.4 points, 5.1 rebounds, 4.8 assists and 1.5 steals per game. Graham completed his B.A. in communications from San Jose State in May 2010.
As a senior in 2010–11, Graham averaged a career-high 14.2 points per game, in addition to 4.5 rebounds, 4.4 assists and 2.3 steals per game. On January 6, 2011, he scored a career-high 29 points and played all 60 minutes of the Spartans' 102–101 quadruple overtime home loss to Boise State. With 50 seconds remaining in the second half, Graham hit a three-pointer and had San Jose State trailing 72–69; he then scored the tying jumper to force overtime. On February 23, he broke the school record for career assists to help the Spartans win their third straight game with a 72–70 overtime victory over New Mexico State. At the season's end, he earned WAC All-Defensive Team and All-WAC Honorable Mention honors. Graham had also begun coursework that season for a Master of Arts in kinesiology with a concentration in sport management, a degree he completed in May 2013.
In August 2011, Graham signed with Italian club Vanoli Cremona for training camp. He later parted ways with Cremona in mid-September after appearing in two preseason games.
On November 3, 2011, Graham was selected by the Bakersfield Jam in the third round of the 2011 NBA Development League Draft. He played in two games for the Jam on November 25 and November 26, before an injury forced the team to waive him on December 2. He was reacquired by the Jam on December 14 and played in three more games, before being waived again on December 22.
In September 2012, Graham signed Slovakian club Inter Bratislava for the 2012–13 season. In just his fourth games for Bratislava, in a 102–88 win over SKP Banská Bystrica on October 20, 2012, Graham scored a season-high 29 points, helping the team start the season 4–0. He went on to help the club reach the 2013 Slovak Extraliga Finals series, where Bratislava won 4–3 despite losing the series' first two games to MBK Rieker Komárno. In the Game 7 series-clinching win, Graham scored 10 points. He appeared in 44 games (29 regular season, 15 playoff) for Bratislava in 2012–13, starting in 18 and averaging 9.9 points, 5.8 rebounds, 2.4 assists and 1.2 steals per game.
Graham returned to Inter Bratislava for the 2013–14 season, recording a season-best game with 29 points and 10 rebounds on January 25, 2014 against Levice, and helped the club make it back to the Finals series. There they swept the series 4–0, defeating Prievidza to claim back-to-back championships. Graham appeared in 42 games (32 regular season, 10 playoff) for Bratislava in 2013–14, starting in 22 and averaging 13.0 points, 7.4 rebounds, 2.9 assists and 1.8 steals per game.
In August 2014, Graham signed with Hungarian club Zalakerámia ZTE. He left the club in late November after appearing in seven games. In those seven games, he averaged 9.7 points, 4.9 rebounds, 4.6 assists and 2.1 steals per game.
On December 6, 2014, Graham signed with Inter Bratislava for the rest of the 2014–15 season, returning to the club for a second stint. He helped the club win the 2015 Slovakian Cup title, but they could not overcome eventual champions MBK Rieker Komárno in the playoffs. In 26 games for the club in 2014–15, he averaged 10.0 points, 5.8 rebounds, 3.0 assists and 2.2 steals per game.
On March 25, 2016, Graham signed with the Canterbury Rams as injury replacement for Jamie Adams. He made his debut for the Rams later that day, recording 13 points, 3 rebounds, 4 assists, 1 steal and 1 block in 31 minutes of action as a starter in a 98–94 win over the Southland Sharks. On April 25, in his ninth game for the Rams, Graham was forced to hobble off the court with a knee injury after just three minutes and did not return. Four days later, he was ruled out for three weeks with a medial collateral ligament (MCL) sprain to his knee. He returned to the line-up on May 25, winning the battle over Jamie Adams for the Rams' second import spot for the NBL playoffs. The Rams finished the regular season in first place with a 13–5 record. In their semi-final match-up with the fourth-seeded Super City Rangers, the Rams were outclassed and heavily defeated 104–85. In 11 games for the Rams, he averaged 6.5 points, 3.5 rebounds, 2.1 assists and 1.0 steals per game.
Graham's father, Steve Graham played two seasons of college basketball for Cal State Stanislaus (1986–88) and averaged in double-figure scoring each season. His mother, Shari Hernandez, also played basketball for Cal State Stanislaus. Graham's separated when he was four years old. His sister, Jessica, played basketball for the University of Idaho, another WAC school. Graham is also the step-grandson of former Phoenix Suns center Neal Walk, the second pick in the 1969 NBA draft behind UCLA's Lew Alcindor.