Php 无法使用$this->;自定义帮助程序中的数据库
我有一个Opencart商店。1.5.4并且我已经构建了一个定制的helperPhp 无法使用$this->;自定义帮助程序中的数据库,php,database,connection,opencart,helpers,Php,Database,Connection,Opencart,Helpers,我有一个Opencart商店。1.5.4并且我已经构建了一个定制的helpersystem/helper/variants.php。我创建了一个从数据库获取数据的函数: function countproductvariant() { $newdb = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); $registry->set(‘db’, $db); $registry->
system/helper/variants.php
。我创建了一个从数据库获取数据的函数:
function countproductvariant() {
$newdb = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); $registry->set(‘db’, $db);
$registry->set(‘newdb’, $newdb);
$query = $newdb->query("SELECT count(*) as variants FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE po.product_id = '" . (int) $product_id . "' AND od.language_id = '" . (int) $this->config->get('config_language_id') . "' ORDER BY o.sort_order");
return $query->row['variants'];
}
我在我的控制器/product/product.php中使用它,如下所示:
$this->data['variantcount'] = countproductvariant();
在view/../template/product/product.tpl
echo $variantcount;
我得到的只是一个空白屏幕。如果我删除所有查询并使用返回“0”代码>它正在正确返回0
唯一的问题是数据库连接。这是运行DB查询的正确方法吗
有人遇到过这种问题吗?首先:停止做你正在做的事情
第二:阅读更多关于MVC的内容。OpenCart也是使用MVC实现的,您应该遵循这个标准
第三:你不需要帮助。只需在catalog/model/catalog/product.php
文件中定义该方法,即ModelCatalogProduct
类。该方法应如下所示:
public function count_product_variant($product_id) {
$query = $this->db->query("SELECT COUNT(*) AS variants FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE po.product_id = '" . (int) $product_id . "' AND od.language_id = '" . (int) $this->config->get('config_language_id') . "' ORDER BY o.sort_order");
return $query->row['variants'];
}
第四:在控制器中,产品模型应该已经初始化(找到行$this->load->model('catalog/product');
,并将此代码放在此行之后的某个位置):
建议的第五点:打开错误报告,以便了解错误、警告和通知,并能够修复它们
应该是这样
$this->data['variant_count'] = $this->model_catalog_product->count_product_variant($this->request->get['product_id']);