Php 如何使用主键从表中选择多个数据?

Php 如何使用主键从表中选择多个数据?,php,mysql,pdo,foreach,Php,Mysql,Pdo,Foreach,嗨,我目前正在做一个微型网站,我终于得到了来自数据库的数据工作,并显示在我需要它的地方。我的微型网站是关于英国历史上不同君主的。我用一个引导标签来显示英国历史上的每所房子。如下图所示 然而,第一部分我没有问题,但在丹麦标签中,我只有3个与这座房子相关的君主,但当我尝试创建一个新功能来满足这一需要时,它会影响所有标签 模型 模型中的丹麦函数 public function fetchDenmark() { $sqlQuery = 'SELECT * FROM monarchy WHERE

嗨,我目前正在做一个微型网站,我终于得到了来自数据库的数据工作,并显示在我需要它的地方。我的微型网站是关于英国历史上不同君主的。我用一个引导标签来显示英国历史上的每所房子。如下图所示

然而,第一部分我没有问题,但在丹麦标签中,我只有3个与这座房子相关的君主,但当我尝试创建一个新功能来满足这一需要时,它会影响所有标签

模型

模型中的丹麦函数

public function fetchDenmark() {
    $sqlQuery = 'SELECT * FROM monarchy WHERE MonarchyID BETWEEN 19 AND 21';
    $statement = $this->_dbHandle->prepare($sqlQuery);
    $statement->execute();

    $dataSet = [];
    while($row = $statement->fetch()) {
        $dataSet[] = new MonarchData($row);
    }
    return $dataSet;
}
控制器

<?php
require_once('Model/MonarchData.php');
require_once('Model/MonarchDataSet.php');

session_start();
$view = new stdClass();
$view->pageTitle = 'Brit Monarch';

$monarchDataSet = new MonarchDataSet();
$view->MonarchDataSet = $monarchDataSet->fetchAll();


require_once('View/monarchy.phtml');
HTML

如何使用foreach语句使我想要的数据显示在每个选项卡中,而不影响其他所有选项卡


任何建议都会很棒。

您可以添加一些名为MonteryType的列:

public function fetchAll($type = false) {
    if(!$type) {
        $sqlQuery = 'SELECT * FROM monarchy';
        $statement = $this->_dbHandle->prepare($sqlQuery);
    } else {
        $sqlQuery = 'SELECT * FROM monarchy WHERE MonarchyType = :MonarchyType';
        $statement = $this->_dbHandle->prepare($sqlQuery);
        $statement->bindValue(':MonarchyType', $type);
    }

    $statement->execute();

    $dataSet = [];
    while($row = $statement->fetch()) {
        $dataSet[] = new MonarchData($row);
    }
    return $dataSet;
}
因此,您的模型可能有一种方法来查找所有君主制或仅按君主制类型查找部分君主制:

public function fetchAll($type = false) {
    if(!$type) {
        $sqlQuery = 'SELECT * FROM monarchy';
        $statement = $this->_dbHandle->prepare($sqlQuery);
    } else {
        $sqlQuery = 'SELECT * FROM monarchy WHERE MonarchyType = :MonarchyType';
        $statement = $this->_dbHandle->prepare($sqlQuery);
        $statement->bindValue(':MonarchyType', $type);
    }

    $statement->execute();

    $dataSet = [];
    while($row = $statement->fetch()) {
        $dataSet[] = new MonarchData($row);
    }
    return $dataSet;
}
在应用程序控制器中,您只能找到所需的Monachie:

$view->MonarchDataSet = $monarchDataSet->fetchAll('Danish');

或者,您可以在app controller中找到所有君主制,在您的app视图中,您可以检查所有模型的君主制类型,并仅显示适当的模型

Its出现此错误-致命错误:未捕获错误:调用未定义的方法PDOStatement::bind in C:\Users\lenny\Desktop\BritHist\Model\monarDataSet.php:22堆栈跟踪:0C:\Users\lenny\Desktop\BritHist\monar.php11:monarDataSet->fetchAll'Danish'1{main}在第22I行的C:\Users\lenny\Desktop\BritHist\Model\monarDataSet.php中抛出。尝试新版本的codeAh谢谢我如何在我的控制器中区分不同的房子,例如“Danish”、“Wessex”等,因为现在发生的一切是所有君主的名字都出现在我输入的君主类型中?每个君主数据现在都有财产君主类型。如果此对象适合您,您可以使用此属性签入控制器。我如何使用MonaryType实现此目的,我已尝试在控制器中执行此操作-
public function fetchAll($type = false) {
    if(!$type) {
        $sqlQuery = 'SELECT * FROM monarchy';
        $statement = $this->_dbHandle->prepare($sqlQuery);
    } else {
        $sqlQuery = 'SELECT * FROM monarchy WHERE MonarchyType = :MonarchyType';
        $statement = $this->_dbHandle->prepare($sqlQuery);
        $statement->bindValue(':MonarchyType', $type);
    }

    $statement->execute();

    $dataSet = [];
    while($row = $statement->fetch()) {
        $dataSet[] = new MonarchData($row);
    }
    return $dataSet;
}
$view->MonarchDataSet = $monarchDataSet->fetchAll('Danish');