2014-01-14 5 views
0

상황에 따라 특정 매개 변수가있는 함수를 호출해야하는 if/else 블록이 아래에 있습니다. 함수는 MySQL 데이터베이스의 특정 값을 업데이트합니다. 그러나 데이터베이스 값은 갱신되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?MySQL 데이터베이스의 PHP 값을 업데이트하지 않습니다.

$success = false; 

$homeScore = $_POST['home']; 
$awayScore = $_POST['away']; 
$homeTeamName = $_POST['homeTeam']; 
$awayTeamName = $_POST['awayTeam']; 

try { 
    $win = 0; 
    $loss = 0; 

    // HOME TEAM 
    if ($homeScore > $awayScore) 
    { 
     $win = 1; $loss = 0; 
     updateStandings($db7, $homeTeamName, $win, $loss); 
     $win = 0; $loss = 1; 
     updateStandings($db7, $awayTeamName, $win, $loss); 
    } 
    // AWAY TEAM 
    elseif ($awayScore > $homeScore) 
    { 
     $win = 1; $loss = 0; 
     updateStandings($db7, $awayTeamName, $win, $loss); 
     $win = 0; $loss = 1; 
     updateStandings($db7, $homeTeamName, $win, $loss); 
    } 

    $success = $_SERVER['HTTP_REFERER']; 
} 
catch (Exception $e) 
{ 
    $success="/error"; 
} 
header("Location: " . $success); 

function updateScore($db, $gameID, $home, $away) 
{ 
    $db -> updateScoreForGame($gameID, $home, $away); 
} 
function updateStandings($db, $teamName, $win, $loss) 
{ 
    $db -> updateLeagueStandings($teamName, $win, $loss); 
} 

updateLeagueStandings 여기에 잘못된 무엇

public function updateLeagueStandings($teamName, $win, $loss) { 
    try { 
     $sth = $this -> db -> prepare("UPDATE teams SET wins = wins + (:winsNum), losses = losses + (:lossesNum) WHERE Name = `:teamName`"); 
     $sth->bindParam(':winsNum', $win, PDO::PARAM_INT); 
     $sth->bindParam(':lossesNum', $loss, PDO::PARAM_INT); 
     $sth->bindParam(':teamName', $teamName, PDO::PARAM_STR); 
     $sth -> execute(); 
    } catch (Exception $e) { 
     header('Location: /error'); 
    } 
} 

를 작동

process.php :

다음은 내 코드입니다? 검색어가 잘못 되었습니까? PHPMyAdmin에서 대체 된 값으로 쿼리를 실행 했으므로 문제가되지 않아 쿼리가 될 수 없습니다.

+0

$ homeTeamName> $ awayTeamName ---이 이름이 아닙니다. 점수를 비교해서는 안됩니까? $ homeScore = $ _POST [ 'home']; $ awayScore = $ _POST [ 'away']; – pathfinder

+1

죄송합니다. 코드의 해당 부분을 잘못 복사했습니다. 내가 이미 말한 코드는 : if ($ homeScore> $ awayScore) ... elseif ($ awayScore> $ homeScore)' – DemCodeLines

답변

2
WHERE Name = `:teamName` 

이것이 정확히 스크립트에있는 경우 변수 주위에 역 따옴표를 제거해야합니다.

역 따옴표는 필드 이름을 인용하는 데 사용됩니다.

some extend reading

+0

이것은 트릭을했다! 고맙습니다! 내가 그것을 읽을 수 있도록 할게. – DemCodeLines

관련 문제