首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP多维数组返回空子数组

PHP多维数组返回空子数组
EN

Stack Overflow用户
提问于 2015-05-14 01:29:59
回答 1查看 104关注 0票数 0

我正在使用php通过一个值数组从mysql数据库中拉取数据。

我的初始数组$models是一个部件号列表,如下所示:

代码语言:javascript
复制
 Array ( 
         [0] => AB-1 
         [1] => AB-2 
         [2] => BCA-2 
         [3] => DE3 
 ) 

下面是设置我的数据的foreach,这样我就可以在我的模板页面上显示产品:

代码语言:javascript
复制
$products = array();

 foreach ($models as $key => $prod_num) {
        $product_info = $this->model_extension_news->getModelInfo($prod_num);
        if ($product_info['image']) {
                            $image = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_wishlist_width'), $this->config->get('config_image_wishlist_height'));
                        } else {
                            $image = false;
                        }

                        if ($product_info['quantity'] <= 0) {
                            $stock = $product_info['stock_status'];
                        } elseif ($this->config->get('config_stock_display')) {
                            $stock = $product_info['quantity'];
                        } else {
                            $stock = $this->language->get('text_instock');
                        }

                        if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
                            $price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));
                        } else {
                            $price = false;
                        }
            $products[] = array(
                            'product_id' => $product_info['product_id'],
                            'thumb'      => $image,
                            'name'       => $product_info['name'],
                            'model'      => $product_info['model'],
                            'stock'      => $stock,
                            'price'      => $price,     
                            'href'       => $this->url->link('product/product', 'product_id=' . $product_info['product_id']),

                        );

                }   

我访问数据库,从一个名为getModelInfo()的函数中查找$product_id和其他信息(我使用的是opencart框架):

代码语言:javascript
复制
public function getModelInfo($prod_num){
    $query = $this->db->query("SELECT p.product_id, pd.name AS name, p.model AS model, p.image, p.price, p.quantity FROM " . DB_PREFIX ."product p LEFT JOIN ".DB_PREFIX."product_description pd ON p.product_id = pd.product_id WHERE p.model = '".$prod_num."'");
         return array(
                        'product_id'       => $query->row['product_id'],
                        'name'             => $query->row['name'],
                        'model'            => $prod_num,
                        'image'            => $query->row['image'],
                        'price'            => $query->row['price'],
                        'quantity'         => $query->row['quantity'],
                         );
    }

问题是我的返回数组是不完整的。第一个结果已填写,但其他结果从数据库返回空白信息。我知道数据库里有每种产品的数据...我不明白为什么我的$products数组中没有显示最后3个产品的数据:

代码语言:javascript
复制
Array ( 
        [0] => Array ( 
              [product_id] => 18713 
              [thumb] => http://www.website.com/image/AB-1.jpg 
              [name] => AB-1 FULL 
              [model] => AB-1 
              [stock] => 79 
              [price] => $168.00 
              [href] => http://www.website.com/index.php?route=product/product&product_id=18713 
        ) 
         [1] => Array ( 
               [product_id] => 
               [thumb] => 
               [name] => 
               [model] => AB-2 
               [stock] => 
               [price] => 0 
               [href] => http://www.website.com/index.php?route=product/product&product_id= 
        ) 
         [2] => Array ( 
               [product_id] => 
               [thumb] => 
               [name] => 
               [model] => BCA-2
               [stock] => 
               [price] => 0 
               [href] => http://www.website.com/index.php?route=product/product&product_id= 
        ) 
         [3] => Array ( 
               [product_id] => 
               [thumb] => 
               [name] => 
               [model] => DE-3 
               [stock] => 
               [price] => 0 
               [href] => http://www.website.com/index.php?route=product/product&product_id= 
        ) 
)

这里我漏掉了什么?我在森林里做错了什么吗?有没有其他方法来设置$products?我就是看不出这段代码出了什么问题。感谢任何帮助(或重定向到此问题的已解决版本)!

EN

回答 1

Stack Overflow用户

发布于 2015-05-14 01:58:29

有没有可能你们的一些产品缺少产品说明?在这种情况下,您的“左连接”不会返回该产品的结果。您需要使用:"LEFT OUTER JOIN“(点击此链接了解它的作用:SQL LEFT OUTER JOIN)。

iv'e将其添加到您的查询中:

代码语言:javascript
复制
$query = $this->db->query("
SELECT 
    p.product_id, pd.name AS name, p.model AS model, p.image, p.price, p.quantity 

FROM 
    " . DB_PREFIX ."product p 

LEFT JOIN
    ".DB_PREFIX."product_description pd ON p.product_id = pd.product_id WHERE p.model = '".$prod_num."'");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30221615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档