如何在一个php页面中运行多个查询?
我有一个select查询,然后是另一个select查询,但用于另一个表。我需要运行第一个查询,然后如果它找到了什么,则显示一个带有foreach循环的表。然后,运行第二个查询并选择另一个带有foreach循环的表 这是运行数据库的数据库类:如何在一个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
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énom et Nom</div>
<div>Adresse</div>
<div>Nom d'utilisateur</div>
<div>Date d'inscription</div>
<div>Demandes reç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é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énom et Nom</div>
<div>Adresse</div>
<div>Nom d'utilisateur</div>
<div>Date d'inscription</div>
<div>Demandes reç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énom et Nom</div>
<div>Adresse</div>
<div>Nom d'utilisateur</div>
<div>Date d'inscription</div>
<div>Demandes reçues</div>
</div>
<div style="clear:both;"></div>
<?php foreach($data as $result2): ?>
<div class="clientGenInfosConc">