2014-01-14 66 views
0

我有一个if/else以下的代码块,根据具体情况应该调用具有特定参数的函数。该函数更新MySQL数据库中的特定值。但是,数据库值没有被更新。我究竟做错了什么?MySQL查询不更新数据库中的值在PHP中

以下是我的代码:

process.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'); 
    } 
} 

有什么不对吗?查询是否错误?我用PHPMyAdmin中的替代值运行查询,它工作正常,所以它不能被查询。

+0

$ homeTeamName> $ awayTeamName ---不是他们的名字。你不应该比较分数吗? $ homeScore = $ _POST ['home']; $ awayScore = $ _POST ['away']; – pathfinder

+1

我很抱歉,我在这里错误地复制了那部分代码。我已经说过的代码:'如果($ homeScore> $ awayScore)... elseif($ awayScore> $ homeScore)' – DemCodeLines

回答

2
WHERE Name = `:teamName` 

如果这正是您的脚本中的内容,那么您需要删除围绕该变量的反引号引号。

反引号用于引用字段名称。

some extend reading

+0

这样做的窍门!谢谢!我会确保我读到了。 – DemCodeLines