2011-06-12 54 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