Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和MySQL查询两次输出数据_Php_Mysql - Fatal编程技术网

PHP和MySQL查询两次输出数据

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

我有一个CMS页面模块,当你进入一个页面时,它会显示两次。这就是调用函数的原因:

$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中显示了它应该显示的内容,但在页面上显示了两个。我将编辑我的问题以显示所有显示设置。更改后,它将随机显示一组数字和字母。如果你点击上面的链接,你会看到