PHP/MySQL-单击链接时更改查询

PHP/MySQL-单击链接时更改查询,mysql,sql,Mysql,Sql,我有一个非常基础的网站,只是学习这些东西,在那里我有一个曲棍球池的结果。 我想建立一个页面,列出球员,然后当他们点击一个名字,一个页面上出现的只是球员的选择。你可以看到我指的那种页面 此页面当前仅显示一名玩家,因为我正在使用此查询: $q = "SELECT *, player_id, handle FROM round_one INNER JOIN players USING (player_id) WHERE (player_id = 1)"; 现在

我有一个非常基础的网站,只是学习这些东西,在那里我有一个曲棍球池的结果。 我想建立一个页面,列出球员,然后当他们点击一个名字,一个页面上出现的只是球员的选择。你可以看到我指的那种页面

此页面当前仅显示一名玩家,因为我正在使用此查询:

$q = "SELECT *, player_id, handle 
        FROM round_one 
  INNER JOIN players USING (player_id) 
       WHERE (player_id = 1)";
现在我把它设置为只返回player_id 1,但我希望它根据他们单击的链接名称执行player_id 2、3、4等操作


我在点击列标题时查阅了一些关于按列排序查询的文档,我认为这是我应该采取的方法,但我似乎无法找到正确的方法

您可以通过将参数传递到view_picks_by_player.php页面来实现这一点,然后php可以拾取该参数并为适当的播放器生成内容

例如,在您选择想要统计数据的玩家的页面中,您可以拥有:

<a href='view_picks_by_player?id=player1'>Get Player 1's Stats!</a>
<a href='view_picks_by_player?id=player2'>Get Player 2's Stats!</a>
$id = $_GET['id'];

$sql = "SELECT * FROM player_stats WHERE id = '$id'";
显然,SQL的结构不同,但这只是一种快速的方式,可以显示如何将变量传递到php页面,以便它可以动态生成不同的内容


为了安全起见,在SQL中使用URL之前,您需要验证用户没有在URL中键入任何令人讨厌的“id”,但这是另一个主题…

您可以通过将参数传递到view_picks_by_player.php页面来实现这一点,然后php可以拾取该参数并为相应的播放器生成内容

例如,在您选择想要统计数据的玩家的页面中,您可以拥有:

<a href='view_picks_by_player?id=player1'>Get Player 1's Stats!</a>
<a href='view_picks_by_player?id=player2'>Get Player 2's Stats!</a>
$id = $_GET['id'];

$sql = "SELECT * FROM player_stats WHERE id = '$id'";
显然,SQL的结构不同,但这只是一种快速的方式,可以显示如何将变量传递到php页面,以便它可以动态生成不同的内容


为了安全起见,在SQL中使用URL之前,您需要验证用户没有在URL中键入任何令人讨厌的“id”,但这是另一个主题…

您的数据表是如何构造的?您好-我的数据基本上在两个表中-一个称为round_one,其中包含玩家选择的所有数据,另一个是球员,我有球员姓名、id等。他们通过表中的球员id字段连接。你的数据表是如何构造的?嗨-我的数据基本上在两个表中-一个称为round_,其中有球员选择的所有数据,另一个是球员,我有球员姓名、id,等等。它们是通过表中的player_id字段连接起来的。你接触过它,但最简单的方法是立即将id放入if中,检查is_int$id并返回false if not,这样人们就不能进行简单的注入攻击。是的,除了is_int总是失败之外。从文档中,要测试变量是数字还是数字字符串,例如表单输入(始终是字符串),必须使用is_numeric。。我个人通过转换为整数进行检查,然后再次验证它是否相同,例如strval$val==strvalintval$val,因为is_numeric允许的不仅仅是整数。感谢Dan的回复和帮助-感谢所有其他人对验证问题的帮助-所有这些都很好地工作,我可以看到所有这些东西也会真正帮助我…再次感谢。我在这个问题上遇到了一个小问题-我想我已经解决了,但是当我尝试将参数更改为我使用的参数时,它没有起作用。我为玩家id使用的列是“player_id”,所以我应该在select语句中使用该列而不是id,以便它从player_stats中读取$sql=select*,其中id='$id';-它应该是$sql=SELECT*FROM player_stats,其中player_id='$id';。。。如果是的话,$id查询会改变吗?我假设href语句中的is应该是id=1,id=2,等等……这是正确的吗。我现在得到一个404错误。再次感谢。是的,SQL应该使用您在数据库中描述的字段名。PHP变量实际上可以命名为任何名称,因此您可以将其保留为$id,或者将其更改为对您更有意义的名称。您接触过它,但最简单的方法是立即将id放入if中,检查is_int$id并返回false,这样人们就无法进行简单的注入攻击。是的,除了这一点,它总是会失败。从文档中,要测试变量是数字还是数字字符串,例如表单输入(始终是字符串),必须使用is_numeric。。我个人通过转换为整数进行检查,然后再次验证它是否相同,例如strval$val==strvalintval$val,因为is_numeric允许的不仅仅是整数。感谢Dan的回复和帮助——感谢所有其他人对验证问题的帮助——所有这些都非常有效,我可以看到,所有这些东西也将真正帮助我……再次感谢。我在这方面遇到了一点小障碍
-我以为我有它,但当我试图改变参数,我用它没有工作。我为玩家id使用的列是“player_id”,所以我应该在select语句中使用该列而不是id,以便它从player_stats中读取$sql=select*,其中id='$id';-它应该是$sql=SELECT*FROM player_stats,其中player_id='$id';。。。如果是的话,$id查询会改变吗?我假设href语句中的is应该是id=1,id=2,等等……这是正确的吗。我现在得到一个404错误。再次感谢。是的,SQL应该使用您在数据库中描述的字段名。PHP变量实际上可以命名为任何名称,因此您可以将其保留为$id,或者将其更改为对您更有意义的名称。