是否有更好的方法来包含()一个依赖于不同MySQL查询的PHP循环?

时间:2010-02-03 02:25:46

标签: php mysql include

我有一个很大的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循环注入主页?

1 个答案:

答案 0 :(得分:3)

似乎是了解functionsfunction 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');