问题在于: -
我有一个名为'MatchResults'的体育比赛结果表,其中包含以下字段
PLAYER1 Player2 Player1GamesWon Player2GamesWon Player1Pts Player2Pts league_id
首先,我正在运行一个查询,它将使用我已经拥有的存储变量过滤此表,为我提供更短的行集合: -
$qry = "SELECT * FROM BadmintonMatchResults WHERE league_id = '$leagueid'";
我需要遍历从上面的查询生成的每一行,并使用这些值来更新另一个名为'LeagueTable'的表。 LeagueTable的结构如下: -
member_id 玩过 韩元 丢失 GamesWon GamesLost 区别 点
这些更新采用多种SQL查询的形式,例如: -
$qry = mysql_query("UPDATE LeagueTable SET Played = Played + 1 WHERE member_id = '$p1id'");
$qry = mysql_query("UPDATE LeagueTable SET Played = Played + 1 WHERE member_id = '$p2id'");
if($p1pts > $p2pts) {
$qry = mysql_query("UPDATE LeagueTable SET Won = Won + 1 WHERE member_id = '$p1id'");
$qry = mysql_query("UPDATE LeagueTable SET Lost = Lost + 1 WHERE member_id = '$p2id'");
}
else if($p2pts > $p1pts) {
$qry = mysql_query("UPDATE LeagueTable SET Won = Won + 1 WHERE member_id = '$p2id'");
$qry = mysql_query("UPDATE LeagueTable SET Lost = Lost + 1 WHERE member_id = '$p1id'");
}
$qry = mysql_query("UPDATE LeagueTable SET GamesWon = GamesWon + '$p1won' WHERE member_id = '$p1id'");
$qry = mysql_query("UPDATE LeagueTable SET GamesWon = GamesWon + '$p2won' WHERE member_id = '$p2id'");
$qry = mysql_query("UPDATE LeagueTable SET GamesLost = GamesLost + '$p1won' WHERE member_id = '$p2id'");
$qry = mysql_query("UPDATE LeagueTable SET GamesLost = GamesLost + '$p2won' WHERE member_id = '$p1id'");
$qry = mysql_query("UPDATE LeagueTable SET Difference = GamesWon - GamesLost");
$qry = mysql_query("UPDATE LeagueTable SET Points = Points + '$p1pts' WHERE member_id = '$p1id'");
$qry = mysql_query("UPDATE LeagueTable SET Points = Points + '$p2pts' WHERE member_id = '$p2id'");
忽略我所拥有的任何$变量,因为我目前正在对表格中输入的数据执行此操作,但是想要更改它以便它使用来自其他数据库的行。我也知道我的查询可以被压缩和组合,我的主要问题是针对不同的值集循环多次查询这一组查询。
我的问题是: -
注意:其中一些查询已经嵌套在IF语句中,因此任何循环都必须超出它。
非常感谢任何帮助!
答案 0 :(得分:0)
如果您打算以这种方式执行操作,请告诉我您在SQL语句中使用数据之前清理数据。如果我输入“0”或“1 = 1”作为我的输入,并且您使用了SQL,那么SQL就不会按预期执行。
要点击然后使用参考名称从下一个文件中使用数据,您只需执行此操作:
if(mysql_num_rows($result)>0){
while($row = mysql_fetch_assoc($result)){
// ... your loop here code here
mysql_query("UPDATE LeagueTable SET Played = Played + 1 WHERE member_id = '" . $row['Player1'] . "'");
}
}
说实话,这仍然看起来你的工作方式非常低效,因为你正在努力使MySQL套接字工作。我会考虑您需要存储多少计算以及在聚合SQL查询中可以计算出多少计算。