如何在一个php页面中运行多个查询?

如何在一个php页面中运行多个查询?,php,database,pdo,Php,Database,Pdo,我有一个select查询,然后是另一个select查询,但用于另一个表。我需要运行第一个查询,然后如果它找到了什么,则显示一个带有foreach循环的表。然后,运行第二个查询并选择另一个带有foreach循环的表 这是运行数据库的数据库类: class DB { private static $_instance = null; private $_pdo, $_query, $_error = false, $_count = 0; publ

我有一个select查询,然后是另一个select查询,但用于另一个表。我需要运行第一个查询,然后如果它找到了什么,则显示一个带有foreach循环的表。然后,运行第二个查询并选择另一个带有foreach循环的表

这是运行数据库的数据库类:

class DB {
private static $_instance = null;
private $_pdo, 
        $_query, 
        $_error = false,
        $_count = 0;
public $_results;

private function __construct() {
    try {
        $this->_pdo = new PDO(...);
    } catch(PDOException $e) {
        die($e->getMessage());
    }
}

public static function getInstance() {
    if(!isset(self::$_instance)) {
        self::$_instance = new DB();
    }
    return self::$_instance;
}

public function query($sql, $params = array()) {
    $this->_error = false;
    if($this->_query = $this->_pdo->prepare($sql)) {
        $x = 1;
         if(count($params)) {
            foreach($params as $param) {
                $this->_query->bindValue($x, $param);
                $x++;
            }
        }
        if($this->_query->execute()) {
            $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
            $this->_count = $this->_query->rowCount();
        } else {
            $this->_error = true;
        }
    }

    return $this;
}
然后,在一页上,我有以下内容:

<?php if ($st = DB::getInstance()->query("SELECT * FROM resum WHERE form_id = ? ORDER by date DESC", array(Input::get('formID')))) {
        if ($st->count()) { ?>

            <div id="topSeparateurClient">
            <div>Date</div>
            <div>Concessionnaire</div>
            <div>Client</div>
            <div>Voiture</div>
            <div>Prix</div>
            <div>Statut</div>
        </div>
        <div style="clear:both;"></div>
<?php
            foreach($st->_results as $result) {
                echo "<div class=\"clientGenInfos\">
                        <div><b>".substr($result->date, 0, 10)."</b> / ".substr($result->date, 10)."</div>
                        <div>".$result->concessionnaire."</div>
                        <div>".$result->client."</div>
                        <div>".$result->voiture."</div>
                        <div>".$result->prix."</div>";

                        if ($result->statut == 'En Attente') {
                            echo '<div class="enAttente"><span>En Attente</span></div>';
                        } else if ($result->statut == 'Accepter') {
                            echo '<div class="accepter"><span>Accepter</span></div>';
                        } else if ($result->statut == 'Refuser') {
                            echo '<div class="refuser"><span>Refuser</span></div>';
                        }

                echo "  </div>
                ";
            }

        } else {
            echo '<div class="aucuneDemande">Nothing from now.</div>';
        }

    }
 ?>

日期
让步
客户
伏伊图雷
大奖赛
身材
然后是第二个块,几乎相同,但在他的查询中有另一个表名。现在的问题是,我的第二张表和第一张表的值是一样的。我被困在这里,在网上读东西,对这种情况一无所知。我对PDO对象还是新手!请帮忙

编辑---

这是我的第二个街区

    <?php 
    if ($st = DB::getInstance()->query("SELECT * FROM users WHERE users.group = 3 ORDER by date DESC")) {
        if ($st->count()) { ?>

            <div id="topSeparateurClientConc">
            <div>Pr&eacute;nom et Nom</div>
            <div>Adresse</div>
            <div>Nom d'utilisateur</div>
            <div>Date d'inscription</div>
            <div>Demandes re&ccedil;ues</div>
        </div>
        <div style="clear:both;"></div>
<?php
            foreach($st->_results as $result2) {
                echo "<div class=\"clientGenInfosConc\">
                        <div>".$result2->name."</div>
                        <div>".$result2->adresse."</div>
                        <div>".$result2->username."</div>
                        <div><b>".substr($result2->joined, 0, 10)."</b> / ".substr($result2->joined, 10)."</div>
                        <div>".$result2->concessionnaire."</div>
                    </div>";
            }
        } else {
            echo '<div class="aucuneDemande">Aucune demande transf&eacute;rable en ce moment</div>';
        }
    }
 ?>

公关与教育;名字和名字
阿迪斯
使用名称
日期铭文
reç需求方;使用
不要编写自己的PDO包装。时期 PDO已经是一个包装器了。由专业人士撰写。它有一些缺点,但至少它没有新手程序员数百次引入的有害特性

如果您想让静态方法获取实例-好的,就拥有它吧。但剩下的留给未加工的PDO保存一个函数调用并不值得与自己的包装器的谬误作斗争。

根本不保存通话!看看你在干什么:

<?php if ($st = DB::getInstance()->query("SELECT * FROM resum WHERE form_id = ? ORDER by date DESC", array(Input::get('formID')))) 
假设getInstance()返回原始PDO实例。您的代码将非常好地工作

好吧,我能理解程序员避免重复的愿望。以下是一份:

并放弃在模板中编写SQL调用的想法。首先获取所有数据,然后包含一个带有标记的文件

<?php if ($data): ?>
        <div id="topSeparateurClientConc">
        <div>Pr&eacute;nom et Nom</div>
        <div>Adresse</div>
        <div>Nom d'utilisateur</div>
        <div>Date d'inscription</div>
        <div>Demandes re&ccedil;ues</div>
    </div>
    <div style="clear:both;"></div>
<?php foreach($data as $result2): ?>
    <div class="clientGenInfosConc">

公关与教育;名字和名字
阿迪斯
使用名称
日期铭文
reç需求方;使用

mybe请看一看:@Jester可能会在评论之前先看一看问题正文,也许如果我在第二次查询中使用另一个fetch,它会起作用?如果您在第二个块中遇到问题,您需要发布它。如果你只发布了第一个区块,我们该如何找出问题所在?@Barmar所有必需的代码都已经发布,案例非常清楚谢谢你的评论和时间。我真的很欣赏它,而且总是在编程方面做得更好。我正在测试,会回来给你确认的!我知道。这完全是我的错。我没有回答解释,而是写了整个代码,润色和调试,然后把它放在盘子上给你看。洛尔我很抱歉,我不想侮辱你。你的帮助很有价值,现在我认为这很快就会奏效:)你没有。但是我希望除了复制代码部分之外,你也能阅读解释。我读了,现在我正在修改它,因为一些问题!
$sql = "SELECT * FROM resum WHERE form_id = ? ORDER by date DESC";
$st = DB::getInstance()->prepare($sql);
$st->execute(array(Input::get('formID')));
$data = $st->fetchAll();
if ($data) 
$sql = "SELECT * FROM resum WHERE form_id = ? ORDER by date DESC";
$data = DB::prepare($sql)->execute(array(Input::get('formID')))->fetchAll();
<?php if ($data): ?>
        <div id="topSeparateurClientConc">
        <div>Pr&eacute;nom et Nom</div>
        <div>Adresse</div>
        <div>Nom d'utilisateur</div>
        <div>Date d'inscription</div>
        <div>Demandes re&ccedil;ues</div>
    </div>
    <div style="clear:both;"></div>
<?php foreach($data as $result2): ?>
    <div class="clientGenInfosConc">