2017-01-09 183 views
0

新OOP的。PHP OOP查询返回空白或阵

试图在数据库中查询特定行。 数据库的结构为: ID - 标题 - 价值

(我想查询比赛冠军,并获得后续值)

阵列或者仅仅是空白的查询结果两种。

一些我的格式被混淆或不正确的地方。任何人都可以发现我做错了什么吗?

查询(这其中,这是被称为来自同一个模型内)目录/模型/ 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']; 

and

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

回答

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'); 
+0

谢谢!我修改了代码上面,但我还是必须在正确的索引调用它():'PHP致命错误:在空in..'而行调用一个成员函数是getTemplate():'$这个 - > model_catalog_order - >是getTemplate()[“new_greeting”]'(我试过其他的变化都是在原来的职位) – necrodeus

+0

如果查询不返回任何东西,它不会将任何东西放入'$ template_data',所以你是什么期望从'new_greeting'元素中获得? – Barmar

+0

另外,你为什么不给'getTemplate()'的参数?它期望标题作为参数进行搜索。 – Barmar