繁体   English   中英

有没有更好的方法来包含()一个依赖于变化的MySQL查询的PHP循环?

[英]Is there a better way to include() a PHP loop that depends on a varying MySQL query?

我有一个很大的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查询并将其放置在包含PHP的每个实例之前(这样我就可以控制查询的每个实例的某些变量)。 现在,MySQL查询和包含的PHP循环似乎没有以相同的方式进行通信,并且我收到以下警告:

“警告:mysql_fetch_array():提供的参数不是第3行/home/filepathhere/includedfile.php中的有效MySQL结果资源”

我感觉包含的PHP正在包含文件中运行,然后被注入到主页中。 我需要在运行之前将代码注入主页。

有没有比“ include()”更好的方法将PHP循环注入到主页中?

似乎是学习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');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM