【问题标题】:PHP Method in Class not returning data from database类中的PHP方法不从数据库返回数据
【发布时间】:2018-03-02 06:52:15
【问题描述】:

好的,这应该相当简单。

我有一个包含 3 个不同文本框内容的表格,我的类中的方法应该获取要插入文本框的内容。

应输入内容的示例文本框 (TextArea)。

我的方法

public function LoadBoxes(){
        $db = DB::getInstance();
        $sql = "SELECT * FROM beta_letsgocontent";
        $stmnt = $db->prepare($sql);
        $stmnt->execute();
        $boxes = $stmnt->fetchAll();
            foreach ($boxes as $box) {
                $data[] = array('Low' => $box['boxLow'],
                    'Medium' => $box['BoxMedium'],
                    'High' => $box['BoxHigh']);
            }
            return $data;
        }//function

这是我的表格(下图),因此表格中的数据/内容应该插入到文本框中。

所以当我对 content.php 进行测试时,我会调用类方法:

require_once('../classes/class.content.php');
$boxes = new Contents();
$boxes->LoadBoxes();
var_dump($boxes); 

我得到以下回复:

问题

可以看出,数组键被返回,但是数据库中的数据与数组键不匹配或由方法返回...我很难过,不知道我做错了什么在这里?

有什么建议我哪里出错了吗?难道是我没有正确连接到数据库?

但是,如果是数据库连接错误,我相信我会收到错误

请记住,我是学生,还在学习。

更新

连接架构

class Db {
    private static $instance = NULL;

    private function __construct() {}

    private function __clone() {}

    public static function getInstance() {
        if (!isset(self::$instance)) {
            $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
            self::$instance = new PDO('mysql:host=localhost;dbname=beta', 'root', '', $pdo_options);

        }
        return self::$instance;
    }
}

更新 2

我刚刚在返回正确结果的 test.php 页面上执行了以下操作。

require('connection.php');

function LoadBoxes(){
    $db = DB::getInstance();
    $sql = "SELECT * FROM beta_letsgocontent";
    $stmnt = $db->prepare($sql);
    $stmnt->execute();
    $boxes = $stmnt->fetchAll();
    foreach ($boxes as $box) {
        $box[] = array('Low' => $box['BoxLow'],
        'Medium' => $box['BoxMedium'],
        'High' => $box['BoxHigh']);
    }
return $box;
}//function

print_r(LoadBoxes());
?>

【问题讨论】:

  • 你能添加你的数据库架构吗?此外,由于您没有绑定任何东西,您可以使用 pdo query() 函数而不是 prepare execute
  • @Akintunde 刚刚添加了它,还可以查看我插入的数据库表的图片。我过去多次使用相同的连接模式,但没有问题......
  • 做一个 var_dump($boxes);在 loadBoxes 函数中......让我们看看返回什么
  • @TimothyCoetzee 您可能想要更改在 foreach 循环中存储数据的变量名称,因为您使用相同的变量 $box 进行迭代以及存储数据
  • @Akintunde 请参阅更新 2 我创建了一个 test.php 页面并在返回正确结果的函数中运行了相同的代码。不知道它有什么帮助,只是它表明我的连接正常......

标签: php mysql oop


【解决方案1】:

2 个主要问题;

  1. 您正在从类中返回 $data,但没有使用返回的数组填充变量。
  2. 您正在 var 转储对象本身。

这应该有效;

require_once('../classes/class.content.php');
$boxes = new Contents();
$data  = $boxes->LoadBoxes();
var_dump($data); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-09
    • 2013-08-11
    • 2017-02-10
    • 1970-01-01
    • 2019-01-26
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多