修改 由于我收到了大量的建议,我已经解决了我的问题。 (在意识到我写过的可怕的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 */
};
知道为什么这不起作用?我现在正在看一个空白的白色屏幕。
答案 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
}
?>