PDO将结果合并到一个阵列中

时间:2013-08-05 16:37:35

标签: php arrays pdo array-merge

我有一个查询结果。这是我的代码。

$P = new Product();
echo "<pre>";
print_r($P->get_product_image_path(1));
echo "</pre>";

在产品类中我有这个功能。

public function get_product_image_path($productid){
       $sql = "SELECT picture FROM ".PREFIX."product_picture WHERE product_id = :id";
       $this->query($sql);
       $this->bind(':id', $productid);
       if ($this->rowCount() > 0)                
            return $this->queryResults();
       else 
           return NULL;

   }

这是我的数据库类函数

    public function query($sql)
    {
        return $this->_sql = $this->getPdo()->prepare($sql);
    }


    public function bind($param, $value, $type = null){
        if (is_null($type)) {
          switch (true) {
            case is_int($value):
              $type = PDO::PARAM_INT;
              break;
            case is_bool($value):
              $type = PDO::PARAM_BOOL;
              break;
            case is_null($value):
              $type = PDO::PARAM_NULL;
              break;
            default:
              $type = PDO::PARAM_STR;
          }
        }
        $this->_sql->bindValue($param, $value, $type);
    }



    public function execute(){
        return $this->_sql->execute();
    }



    public function queryResults(){
          $this->execute();
          return $this->_sql->fetchAll(PDO::FETCH_ASSOC);
        }

结果返回

Array
(
    [0] => Array
        (
            [picture] => 1328630682_1_xl.jpg
        )

    [1] => Array
        (
            [picture] => 1328630696_1_xl.jpg
        )

    [2] => Array
        (
            [picture] => 1328630689_1_xl.jpg
        )

)

但我想合并那样的结果

Array
    (
        [0] => 1328630682_1_xl.jpg
        [1] => 1328630696_1_xl.jpg
        [2] => 1328630689_1_xl.jpg
    )

我该怎么做?我是PDO的新手,这就是我无法做到的原因。

2 个答案:

答案 0 :(得分:0)

  1. 摆脱你的数据库类。
  2. 不要从数据库类扩展您的产品类。
  3. 使用PDO获取所需格式的数组
  4. 在这里

    public function get_product_image_path($productid)
    {
        $sql = "SELECT picture FROM ".PREFIX."product_picture WHERE product_id = :id";
        $stm = $this->pdo->prepare($sql);
        $stm->execute(array($productid));
        return $stm->fetchAll(PDO::FETCH_COLUMN, 0);
    }
    
    $pdo = new PDO(...);
    $P = new Product($pdo);
    echo "<pre>";
    print_r($P->get_product_image_path(1));
    echo "</pre>";
    

答案 1 :(得分:-1)

我写了一个新的数据库类函数

public function queryColumn($index = NULL){
    $index = (isset($index)) ? intval($index) : 0;
    $this->execute();
    return $this->_sql->fetchAll(PDO::FETCH_COLUMN,$index);
}

我编辑了我的功能

public function get_product_image_path($productid){
       $sql = "SELECT picture FROM ".PREFIX."product_picture WHERE product_id = :id";
       $this->query($sql);
       $this->bind(':id', $productid);
       if ($this->rowCount() > 0)                
            return $this->queryColumn();
       else 
           return NULL;

   }

因此,我设法合并数组。