Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法使用$this->;自定义帮助程序中的数据库_Php_Database_Connection_Opencart_Helpers - Fatal编程技术网

Php 无法使用$this->;自定义帮助程序中的数据库

Php 无法使用$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->

我有一个Opencart商店。1.5.4并且我已经构建了一个定制的helper
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']);