【发布时间】: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 页面并在返回正确结果的函数中运行了相同的代码。不知道它有什么帮助,只是它表明我的连接正常......