PHP函数中的MySQL While循环 如何将PHP函数的MySQL循环转换为HTML自定义标记?

PHP函数中的MySQL While循环 如何将PHP函数的MySQL循环转换为HTML自定义标记?,php,mysql,function,while-loop,preg-replace,Php,Mysql,Function,While Loop,Preg Replace,我在PHP函数中有一个MySQL While循环。基本上,如果需要,块代码可以在没有任何用户错误的情况下重用 不过,这是用于客户端实现的。我想让这个过程尽可能简单,让客户端在不必学习PHP的情况下添加PHP函数,还可以通过我的CMS后端插入文本区域 我已经有了使用preg_replace的自定义标记代码,但这涉及将函数的内容设置为变量。按照我当前设置MySQL while循环的方式,当/如果我用变量替换echo时,它只显示第一行。我对preg_replace了解不够,不知道是否可以在没有变量的情

我在PHP函数中有一个MySQL While循环。基本上,如果需要,块代码可以在没有任何用户错误的情况下重用

不过,这是用于客户端实现的。我想让这个过程尽可能简单,让客户端在不必学习PHP的情况下添加PHP函数,还可以通过我的CMS后端插入文本区域

我已经有了使用preg_replace的自定义标记代码,但这涉及将函数的内容设置为变量。按照我当前设置MySQL while循环的方式,当/如果我用变量替换echo时,它只显示第一行。我对preg_replace了解不够,不知道是否可以在没有变量的情况下使用它

MySQL While循环/PHP函数(示例):

function myPageList($var1,$var2) 
{
    global $dbc;

    $query = "SELECT page_url, title, desc FROM pages ORDER BY nav_order ASC";
    $query_result = @mysql_query($query, $dbc);

    while ($row = mysql_fetch_array($query_result)) 
    {
        $page = $row['page_url'];
        $title = $row['title'];
        $desc = $row['desc'];
        echo "content goes here";
    }
}
[myPageList]
自定义标记(最终结果):

function myPageList($var1,$var2) 
{
    global $dbc;

    $query = "SELECT page_url, title, desc FROM pages ORDER BY nav_order ASC";
    $query_result = @mysql_query($query, $dbc);

    while ($row = mysql_fetch_array($query_result)) 
    {
        $page = $row['page_url'];
        $title = $row['title'];
        $desc = $row['desc'];
        echo "content goes here";
    }
}
[myPageList]
无论我是添加到当前拥有的代码中,还是使用完全不同的代码,最终我都需要一个用于PHP函数的HTML安全自定义标记


如果您需要更多详细信息,请告诉我。

这里有一种快速且有点脏的方式来输出html标记。 htmlentities用于逃避来自db的内容,这有助于防止xss问题。 如果要使用textareas,请添加标记以代替表标记

理想情况下,您应该考虑从代码中分离标记,例如查看MVC设计模式。我希望这对你有帮助

function myPageList($var1,$var2) {
global $dbc;
$query = "SELECT page_url, title, desc FROM pages ORDER BY nav_order ASC";
$query_result = @mysql_query($query, $dbc);

//begin table
echo '<table>';
  while ($row = mysql_fetch_array($query_result)) {

    $page  = htmlentities($row['page_url']);
    $title = htmlentities($row['title']);
    $desc  = htmlentities($row['desc']);

    //produce table row
    echo '<tr>';
    echo '    <td>'.$page.'</td>';
    echo '    <td>'.$title.'</td>';
    echo '    <td>'.$desc.'</td>';
    echo '</tr>';

  }
 //end table
 echo '</table>'; 
}
函数myPageList($var1,$var2){
全球$dbc;
$query=“按导航顺序ASC从页面顺序中选择页面url、标题、描述”;
$query\u result=@mysql\u query($query,$dbc);
//开始桌
回声';
while($row=mysql\u fetch\u数组($query\u result)){
$page=htmlentities($row['page_url']);
$title=htmlentities($row['title']);
$desc=htmlentities($row['desc']);
//生成表行
回声';
回显“.$page.”;
回显“.$title.”;
回显“.$desc.””;
回声';
}
//端台
回声';
}

所以基本上您是在尝试实现自己的模板系统?mhmmz。在函数内部执行数据库调用对我来说是新的。因此,如果我不能将其放入简单的标记中,以便客户端手动添加,我可能只会触发一个触发器,如果他们选择,它会自动向页面添加函数。