PHP和MySQL查询两次输出数据
我有一个CMS页面模块,当你进入一个页面时,它会显示两次。这就是调用函数的原因:PHP和MySQL查询两次输出数据,php,mysql,Php,Mysql,我有一个CMS页面模块,当你进入一个页面时,它会显示两次。这就是调用函数的原因: $pages = new pages; if(isset($_GET['action']) && ($_GET['action'] == "pages")){ if($_GET['action'] === 'pages' && isset($_GET['page'])){ $pages->pages(); } elseif ($_GET['action'] === 'pages
$pages = new pages;
if(isset($_GET['action']) && ($_GET['action'] == "pages")){
if($_GET['action'] === 'pages' && isset($_GET['page'])){
$pages->pages();
} elseif ($_GET['action'] === 'pages' && !isset($_GET['page'])) {
$pages->pagelist();
}
$pages->pagesAdminBar();
if(isset($_GET['mode'])){
if($_GET['mode'] == "edit"){
$pages->editPage();
}
if($_GET['mode'] == "addpage"){
$pages->addpage();
}
if($_GET['mode'] == "pageadmin"){
$pages->pageadmin();
}
$pages->pagesAdminBar();
}
}
public function pages(){
global $dbc, $parser, $layout, $main, $settings, $core;
if(isset($_GET['page'])){
$page = mysqli_real_escape_string($dbc, $_GET['page']);
if(!isset($_GET['page']) && !isset($_GET['action'])){
$page = $settings['home_display'];
}
$query = "SELECT * FROM pages WHERE pagename = '$page'";
$data = mysqli_query($dbc, $query);
while ($row = mysqli_fetch_array($data)) {
echo '<div class="shadowbar">';
echo'<h3>' . $row['pagename'] . '</h3>';
$parsed = $parser->parse($row['body']);
echo '<pre>'.$parsed.'</pre>';
echo '</div>';
}
}
}
这就是功能:
$pages = new pages;
if(isset($_GET['action']) && ($_GET['action'] == "pages")){
if($_GET['action'] === 'pages' && isset($_GET['page'])){
$pages->pages();
} elseif ($_GET['action'] === 'pages' && !isset($_GET['page'])) {
$pages->pagelist();
}
$pages->pagesAdminBar();
if(isset($_GET['mode'])){
if($_GET['mode'] == "edit"){
$pages->editPage();
}
if($_GET['mode'] == "addpage"){
$pages->addpage();
}
if($_GET['mode'] == "pageadmin"){
$pages->pageadmin();
}
$pages->pagesAdminBar();
}
}
public function pages(){
global $dbc, $parser, $layout, $main, $settings, $core;
if(isset($_GET['page'])){
$page = mysqli_real_escape_string($dbc, $_GET['page']);
if(!isset($_GET['page']) && !isset($_GET['action'])){
$page = $settings['home_display'];
}
$query = "SELECT * FROM pages WHERE pagename = '$page'";
$data = mysqli_query($dbc, $query);
while ($row = mysqli_fetch_array($data)) {
echo '<div class="shadowbar">';
echo'<h3>' . $row['pagename'] . '</h3>';
$parsed = $parser->parse($row['body']);
echo '<pre>'.$parsed.'</pre>';
echo '</div>';
}
}
}
公共功能页(){
全局$dbc、$parser、$layout、$main、$settings、$core;
如果(isset($_GET['page'])){
$page=mysqli\u real\u escape\u字符串($dbc,$\u GET['page']);
如果(!isset($\u GET['page'])和&!isset($\u GET['action'])){
$page=$settings['home_display'];
}
$query=“从pagename='$page''的页面中选择*;
$data=mysqli_查询($dbc,$query);
while($row=mysqli\u fetch\u数组($data)){
回声';
SELECT DISTINCT * FROM pages WHERE pagename = '$page'
回显'.$row['pagename'].';
$parsed=$parser->parse($row['body']);
回显“.$parsed.”;
SELECT DISTINCT * FROM pages WHERE pagename = '$page'
回声';
SELECT DISTINCT * FROM pages WHERE pagename = '$page'
}
}
}
但当我在浏览器中转到页面时,它会显示两次查询数据。尝试使用DISTINCT select data。它将把同一行合并为一行
public function pages(){
global $dbc, $parser, $layout, $main, $settings, $core;
if(isset($_GET['page'])){
$page = mysqli_real_escape_string($dbc, $_GET['page']);
if(!isset($_GET['page']) && !isset($_GET['action'])){
$page = $settings['home_display'];
}
$query = "SELECT * FROM pages WHERE pagename = '$page'";
$data = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($data);
echo '<div class="shadowbar">';
echo'<h3>' . $row['pagename'] . '</h3>';
$parsed = $parser->parse($row['body']);
echo '<pre>'.$parsed.'</pre>';
echo '</div>';
}
}
试试这可能是可行的,因为有时在while循环中调用$rows=mysqli\u fetch\u array($data)时肯定会出现问题
公共功能页(){
全局$dbc、$parser、$layout、$main、$settings、$core;
如果(isset($_GET['page'])){
$page=mysqli\u real\u escape\u字符串($dbc,$\u GET['page']);
如果(!isset($\u GET['page'])和&!isset($\u GET['action'])){
$page=$settings['home_display'];
}
$query=“从pagename='$page''的页面中选择*;
$data=mysqli_查询($dbc,$query);
$row=mysqli\u fetch\u数组($data);
回声';
SELECT DISTINCT * FROM pages WHERE pagename = '$page'
回显'.$row['pagename'].';
$parsed=$parser->parse($row['body']);
回显“.$parsed.”;
SELECT DISTINCT * FROM pages WHERE pagename = '$page'
回声';
SELECT DISTINCT * FROM pages WHERE pagename = '$page'
}
}
我认为pages()中的代码被调用了两次,因为您的类没有构造函数,并且有两行代码
$pages=新页面代码>和$pages->pages()代码>产生相同的结果。嗯,所以它仍然在这样做,这告诉我一定有东西告诉它显示twiceIt仍然输出两次。如果你看着我,你就会明白我的意思。它输出了两次,但我看不见why@Cheesecake您的数据中有多少列?除了页面名和正文?也许,您的数据具有相同文档的版本?尝试从以下页面中选择不同的页面名、正文代码>而不是选择所有字段。您可以先在phpMyAdmin中研究查询结果,以了解一些情况。@TimothyHa问题是,它在phpMyAdmin中显示了它应该显示的内容,但在页面上显示了两个。我将编辑我的问题以显示所有显示设置。更改后,它将随机显示一组数字和字母。如果你点击上面的链接,你会看到