我有一个很大的PHP循环,我在我网站的多个页面上的多个位置重复使用。我通常只是使用include()在需要的地方设置PHP循环,但是有问题的PHP循环使用MySQL查询,我需要在其中为不同的实例更改变量(不同的过滤器和不同的LIMIT) PHP循环。
<?php
$results = mysql_query("SELECT * FROM databaseName ORDER BY columnName DESC, otherColumnName DESC LIMIT 6", $connection);
if (!$results) {
die("Database Query Failed");
}
?>
<?php
while ($variable = mysql_fetch_array($results)) {
----Execute this loop----
};
?>
然后我使用
回忆起我需要它的地方<?php include("/filepath/includedfile.php"); ?>
一切运行正常,直到我从包含的文件中获取实际的MySQL查询OUT并将其放在包含PHP的每个实例之前(因此我可以为查询的每个实例控制某些变量)。现在,MySQL查询和包含的PHP循环似乎没有以相同的方式进行通信,我收到以下警告:
“警告:mysql_fetch_array():提供的参数不是第3行/home/filepathhere/includedfile.php中的有效MySQL结果资源”&lt;
我觉得包含的PHP正在包含的文件中运行,然后被注入主页面。我需要在运行之前将代码注入主页面。
有没有比“include()”更好的方法将PHP循环注入主页?
答案 0 :(得分:3)
似乎是了解functions
和function arguments
的好时机。 :)
详细说明:including
文件是重用代码的一种方法,但正如您所经历的那样,没有可控制的方式来改变代码的行为。函数有一个明确定义的接口,可以将参数传递给函数,您可以在函数内部使用它来改变它的行为。
function my_big_loop($condition) {
// preparations
$condition = mysql_real_escape_string($condition); // always! even for simple examples. :)
$results = mysql_query("SELECT * FROM somewhere WHERE x = '$condition'");
// do loopy stuff
return $big_pile_of_HTML;
}
echo my_big_loop('somecondition');