使用URL的ID从MySQL中选择数据(Selecting data from mySQL usin

2019-06-26 12:28发布

我有一个具有列的表

GroupID | GroupName | GroupDesc | Overs |
-----------------------------------------
1       | Test Group|Description| Yes   |

我有一个名为list.php的页面,它目前创建的组表(上图)在DB的每一行的URL。

该代码是不是最漂亮的,但我认为它的工作原理,这是他的代码

list.php的

<?php 
    $result = mysql_query("SELECT * FROM groups");

    while($row = mysql_fetch_array($result))
        {
            echo "<div class=\"divider\">";
            echo "<a href=\"group.php?id=";
            echo $row['GroupID'];
            echo "\">";
            echo $row['GroupName'];

            echo "</a>";
            echo "<br><br>";
            echo $row['GroupDesc'];
            echo "<br>";
            echo "Over 18's: ";
            echo $row['AgeRes'];
            echo "</div>";
        }
?>

然后,这将创建一个URL像这样http://domainname.com/group/group.php?id=1

这是我的问题是 - 我怎么会选择在上面的URL中使用的ID部分从DB相关行?

我的第二个问题是我们如何制止这种被SQL注射?

我有点新的这一切,所以我很愿意就这个问题和任何良好的阅读源的答案,所以我可以进一步发展自己的技能。

谢谢

Answer 1:

要回答第一个问题,你需要在查询中使用WHERE子句。 我不知道如果我使用的列名是正确的,但我相信你的想法。 有伟大的在线交互式SQL教程免费,你可以用它来获得如何编写查询一些想法的负荷。

要回答你的第二个问题,你可以使用mysql_real_escape_string()函数来整理传递的变量。 但更好的方法是改变你要连接的datbase的方式。 该PDO与mysqli的都做连接数据库的一个更好的工作。 你应该看看那些学习代替 - 特别是如果你是刚刚起步。

<?php 
    $id=mysql_real_escape_string($_GET['id']);
    $result = mysql_query("SELECT * FROM groups where id=".$id.";");
    // Am not 100% sure if that is the right column name to use for your database.


    while($row = mysql_fetch_array($result))
    {
        echo "<div class=\"divider\">";
        echo "<a href=\"group.php?id=";
        echo $row['GroupID']; 
        echo "\">";
        echo $row['GroupName'];

        echo "</a>";
        echo "<br><br>";
        echo $row['GroupDesc'];
        echo "<br>";
        echo "Over 18's: ";
        echo $row['AgeRes'];
        echo "</div>";
    }
?>


Answer 2:

Q1:您需要检索请求变量,并在您的SQL查询:

$result = mysql_query("SELECT * FROM groups WHERE id = '" . $_GET['id'] . "'");

Q2:第一,包括在查询之前,您应该逃避值:

$id = (int)mysql_real_escape_string($_GET['id']);

然后改变你的查询到以下几点:

$result = mysql_query("SELECT * FROM groups WHERE id = '" . $id . "'");


文章来源: Selecting data from mySQL using the ID in URL