2011-06-12 53 views
0

由于某种原因,我返回的数组不是我所期望的。有人可以向我解释为什么我得到最新的结果,我能做些什么来解决它?这是有问题的代码:PHP类数组问题

public static function getProduct($_row, $_value) 
{ 
    $stmt = _DB::init()->prepare("SELECT pid, name, quantity, price, cost 
           FROM products 
           WHERE $_row = ?" 
          );        
    if($stmt->execute(array($_value))) 
    { 
    while ($row = $stmt->fetch()) 
     return $row; 
    }   
} 

    $product = Class::getProduct('pid',1); 
    print_r($product); 

当我打印以下阵列我得到每行有两个结果,像这样:

Array ([pid] => 1 [0] => 1 [name] => Boondoggle [1] => Boondoggle [quantity] => 12 [2] => 12 [price] => 9.9900 [3] => 9.9900 [cost] => 12.9900 [4] => 12.9900) Boondoggle 

我只是想显示关联结果。我的功能有什么问题?

+0

你用什么接口来连接到DB? – Xaerxess 2011-06-12 05:30:32

回答

1

的从外观上来看,你正在使用PDO来与您的DBMS进行通信。 PDOStatement :: fetch()方法的第一个参数是一个参数,告诉它返回什么。默认情况下,它以名称格式和编号索引格式返回每列,以便更容易地迭代列。为了只将列名作为索引,可以将PDO :: FETCH_ASSOC传递给您的调用。所以fetch语句应该是这样的:

while ($row = $stmt->fetch(PDO::FETCH_ASSOC) 

在这里看到更多的细节: http://www.php.net/manual/en/pdostatement.fetch.php

1

通PDO :: FETCH_ASSOC您取拨打:

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) 

编辑:我只是假设你使用PDO,当然

+0

哈,我是,谢谢你! – 2011-06-12 05:57:50