PHP OOP查询返回空白或数组

时间:2017-01-09 22:45:44

标签: php mysql oop

OOP新手。

尝试在数据库中查询特定行。 数据库结构如下: id - title - value

(我正在尝试查询匹配标题并获取后续值)

查询会导致数组或只是空白。

我的某些格式在某处混淆或不正确。谁能发现我做错了什么?

查询(在调用此模型的同一模型中) catalog / model / order.php

public function getTemplate($title) {
    $query = $this->db->query("SELECT * FROM km_mail_templates WHERE `title` = '" . $this->db->escape($title) . "'");

    foreach ($query->rows as $result) {
            $template_data[$result['title']] = $result['value'];
    }

    return $template_data;
}

我试图打电话的变量:

public function index() {//called from within order.php model
  $this->getTemplate()['new_greeting'];
}

也尝试过:

$this->model_catalog_order->getTemplate()['new_greeting'];

$this->model_catalog_order->getTemplate('new_greeting');

1 个答案:

答案 0 :(得分:0)

如果查询找不到任何内容,foreach()正文永远不会被执行,因此您永远不会初始化$template_data,并且您将返回null。您需要在循环之前将其初始化为数组。

由于你每次只是在循环中覆盖相同的数组元素,所以循环没有意义,只需从数组中获取一个元素。

似乎没有必要返回数组,您只需将查询检索到的值作为字符串返回。

public function getTemplate($title) {
    $query = $this->db->query("SELECT * FROM km_mail_templates WHERE `title` = '" . $this->db->escape($title) . "'");

    if (!empty($query->rows)) {
        return $query->rows['value'];
    } else {
        return '';
    }
}

然后你会像这样使用它:

$greeting = $this->getTemplate('new_greeting');