Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP可以';t检索$\u获取变量_Php_Html_Mysql - Fatal编程技术网

PHP可以';t检索$\u获取变量

PHP可以';t检索$\u获取变量,php,html,mysql,Php,Html,Mysql,我正在尝试建立一个简单的数据库搜索页面,这是一个帮助我学习的个人项目。我将构建一个表单,搜索我的MTG卡集合(非常大)。我已经建立了数据库,并且可以查询。在我的学习之地之旅中,我碰壁了。这堵墙的事实是,我无法获取$get variable来重新分配给变量以供进一步使用。为了方便起见,我已经将代码缩减为一个变量,甚至在这个简单的代码上也可以实现任何功能。这伤了我那粘糊糊的学生的大脑== 函数搜索\u mtg($\u get){ $name=$_GET[“name”]; } 回显“直接-->”$_获

我正在尝试建立一个简单的数据库搜索页面,这是一个帮助我学习的个人项目。我将构建一个表单,搜索我的MTG卡集合(非常大)。我已经建立了数据库,并且可以查询。在我的学习之地之旅中,我碰壁了。这堵墙的事实是,我无法获取$get variable来重新分配给变量以供进一步使用。为了方便起见,我已经将代码缩减为一个变量,甚至在这个简单的代码上也可以实现任何功能。这伤了我那粘糊糊的学生的大脑==

函数搜索\u mtg($\u get){
$name=$_GET[“name”];
}
回显“直接-->”$_获取[“名称”]。“
”; 回显“重新分配-->”$名称
直接呼叫打印的钥匙很好。重新分配的变量不包含任何内容,我只是不明白为什么

如果有帮助的话,这是(极其简化的)表单


名称:
输入类型=“提交”>

如果我不能通过一个变量,我就不希望继续这个项目,因为在你的代码中你永远不会调用
search\u mtg
,所以它永远不会执行,也永远不会给
$name
赋值。更重要的是,即使它确实执行了,
$name
在执行后超出了范围,因此也不会打印所谓的重新分配变量

您是否对代码进行了过多的裁剪,还是确实如此?

函数搜索\u mtg($val){
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");
//您不能在这里定义变量$name并在作用域之外使用它,您必须返回,除非您使用'global',这不是一个好的做法 return$_GET[$val]; } 回显“直接-->”$_获取[“名称”]。“
”; 回显“重新分配-->”。搜索(名称);
坏习惯,不要做下面的练习

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

echo "Directly -->" . $_GET["name"] . "<br>";
search_mtg("name");
echo "Reassigned -->" . $name;
函数搜索\u mtg($val){
全球$名称;
$name=$_GET[$val];
}
回显“直接-->”$_获取[“名称”]。“
”; 搜索(名称); 回显“重新分配-->”$名称
您有多个概念/逻辑错误:

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;

你真的在某处调用
search\u mtg
?这是设置
$name
值的唯一方法。
$name
仅在函数的作用域内,您不会从外部访问它。建议您接受对您帮助最大的答案,这就是它的工作原理;)那些元素没有被修剪,我甚至没有意识到我需要调用它;p(noob错误)我还想知道,将所有这些放在一个文件中并使用$\u PHP\u SELF会更有效吗,还是模块化是一种更好的做法?这对我来说绝对有效,并且重新分配进行得完美无瑕,谢谢你,先生:)我看到我在这个项目上比我应该咬的要多,谢谢你指出这个问题,多亏了你们,我学得很快:)
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;