【发布时间】:2014-06-16 16:12:57
【问题描述】:
这是代码。每当我输入数据时,它都可以正常工作。除了第 9 场比赛外,它会正确计算每一行。除了第 9 场比赛之外,每一场比赛都被正确计算。我坐下来向 3 个人寻求帮助。现在我请你帮我弄清楚为什么会这样。
这是代码:
<?php
include ("../conn_inc.php");
include ("../conn_inc_pdo.php");
require_once ('auth.php');
$game_id= $_POST['game_id'];
$resultat= $_POST['namn'];
$lag1=substr($resultat, 0,1);
$lag2=substr($resultat, 2,1);
if ($lag1>$lag2){
$tips="1";
}
if ($lag1<$lag2){
$tips="2";
}
if ($lag1==$lag2){
$tips="x";
}
//echo $tips;
//------------------FIND ALL ALREADY POSTED GAMES---------------\\
$sql2 = $pdo->prepare("SELECT game_id FROM vm2014res WHERE :game_id = game_id");
$sql2->execute(array(':game_id' => $game_id));
if ($sql2->rowCount() == 0) {
//------ IRRELEVANT TEST CODE 3 LINES DOWN-----\\
echo $game_id;
echo $resultat;
echo "<br>";
//----------- INSERT THE VALUE OF THE GAME IF IT DOESNT EXIST -------\\
$q = "INSERT INTO vm2014res (game_id, resultat, added) VALUES (:game_id, :resultat, CURRENT_TIMESTAMP)";
$query = $pdo->prepare($q);
$query->execute(array(
':game_id' => $game_id,
':resultat' => $resultat
));
//------------------CHECK IF YOU SHOULD BE GETTING POINTS FOR A CORRECT GUESSED RESULT---------------\\
$SQL = $pdo->prepare("SELECT * FROM vm2014 WHERE game_id = :game_id AND resultat = :resultat");
$SQL->execute(array(':game_id' => $game_id, ':resultat' => $resultat));
$r = $SQL->fetchAll(PDO::FETCH_ASSOC);
foreach($r as $row){
$bet_id = $row['bet_id'];
$game_id = $row['game_id'];
$tips = $row['tips'];
$resultat = $row['resultat'];
$namn = $row['namn'];
$points = $row['points'];
//-------- ALL ECHOS DOWN HERE ARE IRRELEVANT----------\\
echo $bet_id;
echo $game_id;
echo $tips;
echo $resultat;
echo $namn;
echo $points;
echo "<br>";
$points=$points+2;
echo $points;
//------------- UPDATE THE POINTS GOTTEN (2 POINTS)---------\\
$sql2 = $pdo->prepare("UPDATE vm2014 SET points = :points WHERE bet_id = :bet_id");
$sql2->execute(array(':points' => $points,
':bet_id' => $bet_id
));
}
//------------------CHECK IF YOU SHOULD BE GETTING POINTS FOR RIGHT GUESSED GAME---------------\\
$SQL = $pdo->prepare("SELECT * FROM vm2014 WHERE game_id = :game_id AND tips = :tips");
$SQL->execute(array(':game_id' => $game_id, ':tips' => $tips));
$r = $SQL->fetchAll(PDO::FETCH_ASSOC);
foreach($r as $row){
$bet_id = $row['bet_id'];
$game_id = $row['game_id'];
$tips = $row['tips'];
$resultat = $row['resultat'];
$namn = $row['namn'];
$points = $row['points'];
//-------IRRELEVANT ECHOS DOWN HERE--------\\
echo $bet_id;
echo $game_id;
echo $tips;
echo $resultat;
echo $namn;
echo $points;
echo "<br>";
$points=$points+1;
echo $points;
//----------------- UPDATE YOUR POINTS IF YOU SHOULD BE GETTING POINTS FOR THE GAME----\\
$sql2 = $pdo->prepare("UPDATE vm2014 SET points = :points WHERE bet_id = :bet_id");
$sql2->execute(array(':points' => $points,
':bet_id' => $bet_id
));
}
} else {
//-----------------POST WHEN THE GAME RESULT WAS ADDED TO THE DB-------\\
$SQL6 = $pdo->prepare("SELECT * FROM vm2014res WHERE game_id = :game_id");
$SQL6->execute(array(':game_id' => $game_id));
$ra = $SQL6->fetchAll(PDO::FETCH_ASSOC);
foreach($ra as $row){
$game_id = $row['game_id'];
$resultat = $row['resultat'];
$added = $row['added'];
echo "Resultatet är redan registrerat. Det registrerades: <strong>" . $added . "</strong> och det vart <strong>" . $resultat . "</strong> i matchen.";
}
}
我包含了整个代码部分,因为我不知道代码的错误部分在哪里。它应该在后面的部分:
//------------------Kolla om du ska få poäng för ditt tips---------------\\
但我看不到问题。
我在第 9 场比赛中输入 2-1。这是数据库的输入:(我不知道如何在这个网站上制作一个表格)
bet_id game_id 提示 resultat name poäng 9 9 1 2-1 球员 1 2 57 9 x 1-1 球员 2 0 105 9 x 1-1 球员 3 0 153 9 1 2-0 球员 4 0 201 9 1 2-1 球员 5 2 249 9 1 3-0 球员 6 0 297 9 x 1-1 球员 7 0 345 9 x 0-0 球员 8 0 393 9 2 0-1 球员 9 1 441 9 1 1-0 球员 10 0 489 9 2 0-3 球员 11 1 537 9 x 0-0 球员 12 0 585 9 x 1-1 球员 13 0 633 9 1 2-0 球员 14 0 681 9 2 1-2 球员 15 1 729 9 2 0-1 球员 16 1 777 9 x 1-1 球员 17 0 825 9 1 3-0 球员 18 0 873 9 2 2-3 球员 19 1 921 9 2 0-1 球员 20 1 969 9 x 2-2 球员 21 0 1017 9 x 2-2 球员 22 0 1065 9 2 2-1 球员 23 3 1113 9 x 0-0 球员 24 0 1161 9 2 1-1 球员 25 1如您所见,一些玩家因犯错而获得积分。有些人因为正确的结果而得分,但因为猜猜谁赢了比赛而没有得分。
有人可以帮我找出问题所在吗?
【问题讨论】:
-
首先您必须解释示例输出如何显示正确/错误。我不知道
2-2或2-1是什么意思。而且我们不会通读一堵基本上完全没有记录的代码来尝试猜测问题出在哪里。 -
2-1 是结果。 2 对 1。我不知道要添加什么 cmets。不过我可以试试
-
@MarcB ive 添加了尽可能多的 cmets
-
@saknarnamn 你的参数似乎是错误的方式:
$sql2 = $pdo->prepare("SELECT game_id FROM vm2014res WHERE :game_id = game_id");应该是WHERE game_id = :game_id"); -
您实际比较他们的猜测(提示?)正确或错误的部分在哪里?我看到了关于检查他们是否应该得到点的评论,但没有实际的比较......