包括功能

时间:2010-12-20 21:50:10

标签: php mysql

修改 由于我收到了大量的建议,我已经解决了我的问题。 (在意识到我写过的可怕的PHP代码之后。):D

感谢所有人!

是否存在包含的php文件中的函数无法在父页面上运行的原因?我在php文件中有两个函数,它们包含在页面顶部。但是,当我尝试调用该函数时,它不会执行任何操作。这是基本布局:

主页:

<?php include 'includes/header.php'; ?>
<?php getPosts();?>
<div>Some HTML Code</div>
<?php endPosts(); ?>

的header.php

function getPosts() {
$result = mysql_query("SELECT * FROM posts order by id desc") or die(mysql_error());  
     while($row = mysql_fetch_array($result)) {
};
function endPosts() {
} /*End while statement */
};

知道为什么这不起作用?我现在正在看一个空白的白色屏幕。

5 个答案:

答案 0 :(得分:1)

该代码所以无效。你为什么在另一个函数中声明一个函数?并且在函数声明/循环的末尾不应该有分号。首先要做的是启用错误报告。

答案 1 :(得分:1)

我认为功能中的那种剥离不会起作用。你是不是从PHP解析器中得到了错误?

你应该使用这样的东西:

<?php $res = getPosts() ?>
<?php while ($item = mysql_fetch_array($res)): ?>
  <div>Some HTML code</div>
<?php endwhile; ?>

使用getPosts()功能,例如:

function getPosts()
{
  $query = mysql_query("SELECT * FROM posts order by id desc");

  if (!$query) die('MySQL error');

  return $query;
}

答案 2 :(得分:1)

我认为你缺少对功能是什么的核心理解。除非传递给函数,否则一个函数内的变量不能被另一个函数访问。

此外,您无法在一个函数中启动过程语句(while循环)并在另一个函数中结束它。

答案 3 :(得分:0)

您实际上是在尝试为帖子中的每一行创建一个名为endPosts的无参数函数。我甚至不知道你在尝试什么,但这不起作用。你不能两次声明一个函数。

即使你可以,endPosts也不会做任何事情,所以即使这是有效的代码,它也不会输出任何东西(除了div)。

答案 4 :(得分:0)

这不是PHP的工作原理。包含头文件后,PHP将看到如下内容:

<?php
function getPosts() {
     $result = mysql_query("SELECT * FROM posts order by id desc") or die(mysql_error());  
     while($row = mysql_fetch_array($result)) {
     };

     function endPosts() {

     } /*This is just an empty function */

}; /*And here is where getPosts ends*/
?>

你似乎对包含和函数调用实现之间感到困惑。

我认为你想要做的是:

<?php
getPosts();
while($row = mysql_fetch_array($result)) {
    ?><div>Some HTML Code</div><?php
}
?>