while循环中的PHP作用域问题

while循环中的PHP作用域问题,php,if-statement,while-loop,scope,Php,If Statement,While Loop,Scope,我试图自学php,但我认为这是一个范围问题 我有一个查询、while循环、if/else和一个函数 我想在while循环中回显函数get\u patronapi\u data($id)的结果 到目前为止,我的代码如下(为便于阅读而剥去) 每当我echo获取数据($id)在功能之外,我成功地在屏幕上看到了数据。然而,当我echo获取数据时($id)在循环中,我收到以下错误 注意:在中使用未定义的常量APISERVER-假定为“APISERVER” C:\xampp…在第135行搜索_1.php 警

我试图自学php,但我认为这是一个范围问题

我有一个查询、while循环、if/else和一个函数

我想在while循环中回显函数
get\u patronapi\u data($id)
的结果

到目前为止,我的代码如下(为便于阅读而剥去)

每当我
echo获取数据($id)在功能之外,我成功地在屏幕上看到了数据。然而,当我
echo获取数据时($id)在循环中,我收到以下错误

注意:在中使用未定义的常量APISERVER-假定为“APISERVER” C:\xampp…在第135行搜索_1.php

警告:文件获取内容(APISERVER/PATRONAPI/3047468/dump):失败 打开流:C:\xampp…search_1.php中没有这样的文件或目录 在线154


我肯定我在做一些非常愚蠢的事情,但是我很感激任何帮助。

我不确定我是否完全理解你的问题。如果你把它放进去会怎么样

echo获取API数据($id)

在循环中而不是

回波数据


??如前所述,您没有在循环中调用函数。

我不确定是否完全理解您的问题。如果你把它放进去会怎么样

echo获取API数据($id)

在循环中而不是

回波数据


??如前所述,您没有在循环中调用函数。

假设您希望在while循环中的每次迭代中打印get_patronapi_data()中的数据,那么您需要实际调用该方法,而不是使用$data。现在,您正在尝试打印名为$data的内容,尽管您从未为其设置值。您在函数中返回的$data不能在该函数之外使用,因此它不存在于while循环中

在while循环中可以执行的操作是$data=get_\u data();,然后回显$data。但是,您可以只回显获取数据();首先


如果只想调用函数一次,则需要在启动while循环之前设置一个变量(即$variable=get_patronapi_data()),然后在while循环中使用该变量(即echo$variable)

假设您希望在while循环中的每次迭代中打印来自get_audenapi_data()的数据,那么您需要实际调用该方法,而不是使用$data。现在,您正在尝试打印名为$data的内容,尽管您从未为其设置值。您在函数中返回的$data不能在该函数之外使用,因此它不存在于while循环中

在while循环中可以执行的操作是$data=get_\u data();,然后回显$data。但是,您可以只回显获取数据();首先


如果只想调用函数一次,则需要在启动while循环之前设置一个变量(即$variable=get_patronapi_data()),然后在while循环中使用该变量(即echo$variable)

缺少的链接是以下语句:

$data = get_patronapi_data($id);
您应该在
echo$data之前放置

它调用函数
get_\u data()
将变量
$id
的值作为参数传递,并将函数的值存储在变量
$data

变量
$data
you与函数使用的变量不同。它们使用相同的名称,但不同(我希望您不要在函数中使用关键字
global

阅读中有关函数的更多信息

更新后的(片段)代码如下所示:

    if (SomethingIsTrue) {
        $data = get_patronapi_data($id);
        echo $data;
    } else {
        echo $somethingElse;
    }  
如果不对函数返回的值进行进一步处理,也可以从上面的代码片段中删除临时变量
$data
,只需使用:

    if (SomethingIsTrue) {
        echo get_patronapi_data($id);
    } else {
        echo $somethingElse;
    }  

缺少的链接是以下语句:

$data = get_patronapi_data($id);
您应该在
echo$data之前放置

它调用函数
get_\u data()
将变量
$id
的值作为参数传递,并将函数的值存储在变量
$data

变量
$data
you与函数使用的变量不同。它们使用相同的名称,但不同(我希望您不要在函数中使用关键字
global

阅读中有关函数的更多信息

更新后的(片段)代码如下所示:

    if (SomethingIsTrue) {
        $data = get_patronapi_data($id);
        echo $data;
    } else {
        echo $somethingElse;
    }  
如果不对函数返回的值进行进一步处理,也可以从上面的代码片段中删除临时变量
$data
,只需使用:

    if (SomethingIsTrue) {
        echo get_patronapi_data($id);
    } else {
        echo $somethingElse;
    }  

把我的一些评论作为答案

您需要从以下位置删除引号:

$apiurl = "APISERVER" . "/PATRONAPI/$id/dump";
          ^         ^ <<< remove those
参考:

那么您的连接超出范围,应该在您的函数中使用

即:

对于所有需要连接的函数都要这样做


您需要确保所有文件夹/文件都具有适当的写入权限。

将我的一些评论添加到答案中

您需要从以下位置删除引号:

$apiurl = "APISERVER" . "/PATRONAPI/$id/dump";
          ^         ^ <<< remove those
参考:

那么您的连接超出范围,应该在您的函数中使用

即:

对于所有需要连接的函数都要这样做


您需要确保所有文件夹/文件都具有适当的写入权限。

除非我弄错了,否则您不会在
while
循环中的任何位置定义
$data
。(也许你的意思是
而($data=$stmt->fetch())
?)根据你的编辑;好了。您没有定义APISERVER
。它被视为一个常数。要么将其定义为常量,要么用引号括起来。@Fred他说他是通过在while循环之外调用函数来实现的。
define(“APISERVER”)http://xxxxxxxxxxxx");作为您的第一行。然后执行此
函数获取数据($conn,$id){
并在调用函数时应用相同的方法。并且可能用于
函数g