php include()不起作用?

时间:2013-11-20 02:05:03

标签: php mysql include

我无法让include()函数在我的代码中运行。基本上我有一个$order数组,其中包含我的页面显示顺序。

在这种情况下:页码:1,2,3,4,5,6,如$order数组中所示。

如果我只发布带有确切路径的6 include()个函数,则会显示这些页面,但是如果我尝试将它们包含在此for()循环中,则它不起作用。

$order Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )

$fields = 6;

奇怪的部分是如果我制作阵列4,5,6,1,2,3它的工作完美:

$order Array ( [0] => 4 [1] => 5 [2] => 6 [3] => 1 [4] => 2 [5] => 3 )

仅显示前3页

for($x = 0; $x < $fields; $x++)
{
      $page_info = mysql_query("SELECT * FROM pages WHERE id='" . $order[$x] ."'");
      $pageInfo = mysql_fetch_array($page_info);
      $pageNum = $pageInfo['id'];
      if($pageNum <= 6)
      {
           $pagePath = "page" . $pageNum . ".php";
           include($pagePath);
      }
}

令人困惑的是,我知道它正在阅读每个$pageInfo['id'],因为这是以下输出:

输出:123456

for($x = 0; $x < $fields; $x++)
{
      $page_info = mysql_query("SELECT * FROM pages WHERE id='" . $order[$x] ."'");
      $pageInfo = mysql_fetch_array($page_info);
      echo $pageInfo['id'];
}

此作品

include("page1.php");
include("page2.php");
include("page3.php");
include("page4.php");
include("page5.php");
include("page6.php");

4 个答案:

答案 0 :(得分:2)

你显然有你希望看到的数字(1-6),因为你正在将它们打印到屏幕上。您已经尝试过使用trim的建议,这些建议无法让您更进一步。

我的假设是,用于调试的echo位于if语句之外,并且每次预期时if语句都没有运行。首先,尝试将echo置于if语句中以确保输出相同,然后将var_dump($pagePath);放入其中,以确保您的变量符合您的期望

您可以尝试另一件事,您可以确保该文件存在:

echo (file_exists($pagePath)) ? 'Exists' : 'Does not exist...';

您可以在包含的文件中向我们发送代码,以检查您是否从您的包含中覆盖$x$pageNum等变量 - 变量在包含之间是全局的,并且会相互覆盖。< / p>

最后,我知道你会对此有一个很好的解释,但这看起来非常适合我,在这个特定的应用程序中,你可以这样做:

for($ i = 1; $ i&lt; = 6; $ i ++){     包括'page'。 $ i。 '.PHP'; }

  

侧面说明:

不推荐使用

mysql _ * 函数,您应该使用PDO或mysqli。资源: - http://php.net/manual/en/book.pdo.php - http://php.net/manual/en/book.mysqli.php

PHP的include function是一种语言控制结构,而不是一个函数,所以不应该用括号:(对于你的downvoters,我不说它不能,我说它不应该)

// good:
include 'filename.php';
// bad:
include('filename.php');

答案 1 :(得分:2)

您可能已将$x设置为其中一个包含内的某个数字。如果它只显示前三个,那么也许在page3.php中你有类似$x = 7;的东西。

答案 2 :(得分:0)

1)我不建议在循环中获取数据库,但保留您的示例: 你可以在你的循环中尝试类似

if($pageNum ){ //lets omit the <=6 for the test.
  $pagePath = "page" . $pageNum . ".php";
  echo "include($pagePath);";
}

并检查结果,也许你得到的东西与你期望的不同。

答案 3 :(得分:0)

试试这个

for($x = 0; $x < count($order); $x++)
{
      $page_info = mysql_query("SELECT * FROM pages WHERE id=" . $order[$x]);
      $pageInfo = mysql_fetch_array($page_info);
      foreach($pageInfo as $p_info)
      {
          $pageNum = $p_info['id'];
          break;
      }

  if($pageNum <= 6)
  {
       $pagePath = "page" . $pageNum . ".php";
       require_once($pagePath);//If it can't find the file then it will kill page and show corresponding error
  }

}