无法在while循环中包含文件

时间:2014-08-05 15:31:57

标签: php

所以,我有一个小脚本从数据库中获取一些信息。 它基本上需要做的是包括在&miescudo.php'中生成的svg。

$sql = "SELECT u.id, u.id_facebook, t.*
        FROM user_facebook u
        LEFT JOIN user_team t ON u.id = t.id_user
        WHERE u.id_facebook='100003809660283'";
$result = mysql_query($sql) or die (mysql_error());

while($row = mysql_fetch_array($result)){
    echo '<div>'.include('miescudo.php').'</div>';
    }

我收到以下错误消息:

 Warning: include(miescudo.php?id=1
): failed to open stream: No such file or directory in full-path-goes-here/tusequipos.php on line 56 Warning: include(): Failed opening 'miescudo.php?id=1

但是,当我以相同的方式包含文件但在我的while循环之外它可以正常工作。

我认为以下是造成此错误的原因,但我还没弄清楚如何修复它:

// Won't work; looks for a file named 'file.php?foo=1&bar=2' on the
// local filesystem.

任何帮助和建议都很受欢迎。

哦,我不需要任何关于不使用已弃用的mysql_ *函数的提醒。我很清楚并会相应地更新这段代码 - 我保证!

2 个答案:

答案 0 :(得分:3)

include无法理解非绝对网址。 NOT 执行http请求,除非您作为参数传入的字符串是一个完整的URL,这意味着包含协议:

include('http://example.com/path/to/script.php'); // does an HTTP request
include('/path/to/script.php'); // local request only
include('http://example.com/script.php?foo=bar'); // does an HTTP request
include('script.php?foo=bar'); // local request only, will look for a "...?foo=bar" file

除非HTTP请求完成,否则您的查询参数将被视为文件名的一部分。所以PHP不会查找script.php并传入foo=bar。它会查找名称字面为script.php?foo=bar的文件。

答案 1 :(得分:2)

您不能包含具有GET参数的文件,因为不会注意到GET参数。您必须通过HTTP协议读取输出(如果启用了allow_url_fopen,您可以只使用file_get_contents()),或者如果包含脚本,则可以简单地使用该变量(可能需要将其声明为全局)。并记住使用绝对文件路径。