【问题标题】:Having ?postid = $value to view a certain MySQL Row有 ?postid = $value 来查看某个 MySQL Row
【发布时间】:2014-05-16 17:29:35
【问题描述】:

首先,请原谅我的菜鸟问题。我正在搭建一个博客平台,一切顺利,但我对PHP的$_GET方法完全不熟悉。

我想做的是有这样的事情:例如,当一个人去http://link.dom/blog.php?postid = 1时,页面应该SELECT * FROM blog_posts WHERE id = 1

请注意,我不要求任何代码,而是关于我必须做什么才能实现我想要的。

提前谢谢你!

【问题讨论】:

    标签: php mysql get


    【解决方案1】:

    除了周杰伦的回答:

    'SELECT * FROM blog_posts WHERE id = ' . (int)$_GET['postid']; 
    

    注意(int)。它将postid 强制转换为整数,以确保它不是注入。

    根据您的错误级别,您应该预先添加以下内容:

    if (!isset ($_GET['postid']) || !is_number($_GET['postid'])) {
        die('Error!');
    }
    

    【讨论】:

    • 这对我很有吸引力。我对 PHP 了解的不够多,无法知道它是否真的安全,但 C# 中的相同概念肯定会坚如磐石。
    【解决方案2】:

    变量值应该在 blog.php 上的$_GET['postid'] 中您应该能够以任何您希望的方式使用 $_GET 数组中的那个项目。例如,您可以将它放在一个变量中 -

    $postID = $_GET['postid']; // assigns the array value to a variable
    

    【讨论】:

    • 哈,我期待更复杂的事情,谢谢!
    • 高度危险。你在鼓励SQL injection attacks
    • 我在实际运行查询之前过滤 $_GET 数据。自己学习了注射课程。
    • 准备好的陈述是去这里的方式! :-)
    • @ebyrob 问题与 SQL 查询无关 - 问题与查询字符串有关。显示的 SQL 查询是对 OP 示例的响应,显示了如何使用查询字符串 。从答案中消除查询会更好吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多