【问题标题】:Variable $_GET Variables [duplicate]变量 $_GET 变量 [重复]
【发布时间】:2014-10-29 20:57:29
【问题描述】:

我不确定这是否可行,但我正在尝试构建一个可以构建 MYSQL 查询的函数。

它有一个基本查询。如果 URL 有一个 get 值 (script.php?game=AGame),它将获取该 get 变量并重命名它。然后,该脚本将相应地附加完成 MYSQL 查询所需的数据。

    function build_query($getvar, $renamevar, $dbfield){
        $query = "SELECT * FROM release_dates ";
        $arguments = 0;

        if(isset($_GET['$getvar'])){
        $renamevar = $_GET['$getvar'];

        if($arguments >= 1){
                $query .= "AND  '$dbfield' = '$renamevar' ";
                $arguments = $arguments +1;
            }
            else{
                $query .= "'$dbfield' = '$renamevar' ";
            }
        }
    }

    build_query(g, game, game_title);

但是,在运行代码时出现以下错误:

注意:使用未定义的常量游戏 - 在第 46 行 /www/sites/164/index.php 中假定为“游戏”

注意:使用未定义的常量 g - 在 /www/sites/164/index.php 第 46 行假定为“g”

注意:使用未定义的常量 game_title - 在 /www/sites/164/index.php 第 46 行假定为“game_title”

任何帮助将不胜感激。

【问题讨论】:

  • 当您意识到 3 件事时,这是可能的:1. 关联数组键类型是字符串 2. 尝试首先将 var_dump 作为键传递的内容 3. 字符串文字包含在单个或双引号
  • 和 4. 字段名不包含在单引号中。要么什么都没有,要么反引号。 IE。 `
  • 您的代码容易受到 SQL 注入攻击。在编写与数据库对话的生产代码之前,请研究此主题。
  • 5.此外,您在函数内部的逻辑是错误的,$arguments 将始终为 0,就像现在一样。 6.您“构建”查询但不以任何方式使用/返回它。 7. 请重新审视整个事情。

标签: php mysql variables get variable-variables


【解决方案1】:

调用这个函数

 build_query('g', 'game', 'game_title');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2013-05-15
    • 2012-03-30
    • 1970-01-01
    • 2011-07-15
    • 2010-12-02
    • 1970-01-01
    相关资源
    最近更新 更多