【问题标题】:PHP Pdo: Showing records out of database [duplicate]PHP Pdo:显示数据库中的记录[重复]
【发布时间】:2018-03-22 12:54:20
【问题描述】:

我想在我的网站上显示数据库中的所有记录,这是一个 PDO 构建的网站。我希望它显示所有记录,以便您查看数据库中的内容。

This is how my DB looks like

连接是在另一个名为 config.php 的文档中建立的

<?php

date_default_timezone_set('Europe/Amsterdam');

error_reporting(E_ALL & ~ E_DEPRECATED);
ini_set('display_errors', 'ON');

$CONFIG = array();
$CONFIG['root'] = '/home/tom/public_html';
$CONFIG['rootwebsite'] = '/home/tom/public_html';
$CONFIG['website'] = 'https://###';

$CONFIG['dbhost'] = 'localhost';
$CONFIG['dbuser'] = '####';
$CONFIG['dbpass'] = '####';
$CONFIG['dbdatabase'] = 'tom';
?>

这是我在 php 文档中尝试使用的代码。问题是它不会在我的网站上显示任何内容(这与我的网站文件不同):

<?php

class Forum {

    private $dbh; //dbh = database handler.

    public function __construct($database) {
        $this->dbh = $database;
    }

    public function getForum() {
        $getTopic = $dbh->prepare("SELECT * FROM topics ORDER BY id DESC");
        $getTopic->execute();
        $topics = $getUTopic->fetchAll();
        foreach ($topics as $topic) {
            echo $topic['onderwerp'] . '<br />';
        }
    }

}

【问题讨论】:

  • 启用错误报告!! $dbh-&gt;prepare 应该是 $this-&gt;dbh-&gt;prepare.. 没再看了。
  • @LawrenceCherone 我有,不是这样
  • 使用prepare() 是没用的。只需执行查询。你没有绑定任何东西
  • $getUTopic 不是您准备的声明。
  • 您的 prepare 将结果放入 $getTopic,但您在 $getUTopic 上 fetchAll。

标签: php pdo


【解决方案1】:

您没有调用正确的 $connection 变量。应该是$this-&gt;dbh

$getTopic = $this->dbh->prepare("SELECT * FROM topics ORDER BY id DESC");

您还在execute() 之后混合变量。您应该使用易于记忆的变量。

public function getForum() {
    try {
        $getTopic = $this->dbh->prepare("SELECT * FROM topics ORDER BY id DESC");
        $getTopic->execute();
        $topics = $getTopic->fetchAll();
        foreach ($topics as $topic) {
            echo $topic['onderwerp'] . '<br />';
        }
    } catch (PDOException $pdoEx) {
        echo $pdoEx->getMessage();
        exit;
    } catch (Exception $ex) {
        echo $ex->getMessage();
        exit;
    }
}

此外,由于您没有将任何变量传递给查询,因此使用prepare() 毫无意义。只需致电query()

对于错误报告添加,

error_reporting(E_ALL); #place at the top of the script

您还应该考虑使用合适的 IDE,例如 PHPstorm 或 Netbeans,因为它们很容易指出 unsed 变量

根据@adpro 的建议,这里有一个link,用于帮助调试

【讨论】:

  • 另外一个 IDE 建议 - 这里有一个通用的调试 php 主题吗?这样的问题可以链接到。
  • 如果我这样更改它仍然不会在网站上显示任何错误或记录。
  • 这篇文章链接在帮助-How to debug small programs
  • @Tomishotttieee 你如何建立 PDO 连接?还有你如何调用函数getForum()?请将其添加到您的问题中
  • OP首先需要得到error reporting working
猜你喜欢
  • 1970-01-01
  • 2017-12-22
  • 2016-09-03
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多