PHP无法检索$ _GET变量

时间:2014-01-29 19:50:12

标签: php html mysql

我正在尝试构建一个简单的数据库搜索页面,这是一个帮助我学习的个人项目。我将构建一个搜索我的MTG卡集合的表单(非常大)。我有数据库内置,可查询。在我通过学习土地的旅行中,我撞墙了。这个墙是我无法获得$ GET变量来重新分配给变量以供进一步使用的事实。为了方便起见,我已经将我的代码修剪为一个变量,即使在这个简单的简单代码上也能得到任何结果。它会伤害我那柔软的学生大脑= =

function search_mtg($_get) {
    $name = $_GET["name"];
    }

echo "Directly -->" . $_GET["name"] . "<br>";
echo "Reassigned -->" . $name;

直接调用打印密钥就好了。 。重新分配的变量包含NOTHING,我只是不明白为什么。

如果它有帮助,这是(非常简化)的形式。

 <form action= "testResult.php" method="get">
      Name: <input type="text" name="name"><br>
      input type="submit">
 </form>

如果我无法通过一个变量,我不能希望继续这个项目T_T

3 个答案:

答案 0 :(得分:3)

您有多个概念/逻辑错误:

function search_mtg($_get) {
                    ^^^^^---- do NOT redefine the superglobal variables. 
                              even though variables are case sensitive, don't re-use
                              a superglobal name, even if _get is not the same as _GET
         ^^^^^^^^^^---you never call this function
    $name = $_GET["name"];
    ^^^^^---- never gets returned
}
echo "Reassigned -->" . $name;
                        ^^^^^---never gets defined

你至少想要更像这样的东西:

   function search_mtg() {
      return $_GET['name'];
   }
   $name = search_mtg();
   echo $name;

答案 1 :(得分:2)

在您的代码中,您永远不会调用search_mtg,因此它永远不会执行,也永远不会向$name分配任何内容。更重要的是,即使执行执行,$name在执行后超出了范围,因此也不会打印所谓的重新分配的变量。

您是否过多地修改了代码,或者确实是这样?

答案 2 :(得分:0)

function search_mtg($val) {
    //You can't define a variable here $name and use it outside the scope, you have to return, unless you use `global` which is not a good practice
    return $_GET[$val];
}

echo "Directly -->" . $_GET["name"] . "<br>";
echo "Reassigned -->" . search_mtg("name");

不良做法,请勿执行以下操作

function search_mtg($val) {
    global $name;
    $name = $_GET[$val];
}

echo "Directly -->" . $_GET["name"] . "<br>";
search_mtg("name");
echo "Reassigned -->" . $name;