2011-06-14 85 views
1

我正在與PDO使用的聲明主要內容如下:PHP PDO,並在第

$stmt = _DB::init()->prepare("SELECT a.* 
           FROM tax_class a 
           INNER JOIN products_to_tax_class pa 
           ON a.tid = pa.tid 
           WHERE pa.pid IN (1,2) 
          "); 

現在的說法得到執行,但它只是爭奪結果pa.pid = 2,或給出的那些的最後一個值。任何人都可以爲我解釋這個嗎?我期待的結果的陣列從兩個id's 1 and 2然而這僅輸出Array ([tid] => 2 [rate] => 7.30 [name] => Something)

if ($stmt->execute()) 
      return $stmt->fetch(PDO::FETCH_ASSOC); 

由於

+0

你怎麼取行? – piotrm 2011-06-14 18:41:53

+0

更新了問題:) – grep 2011-06-14 18:47:42

回答

4

$stmt->fetch一次只讀取一行。使用fetchAll返回整個結果集

+0

你搖滾! (如你所見,我是PDO的新手) – grep 2011-06-14 18:50:44

3

看起來你只能呼叫fetch一次。這意味着你從查詢中獲得第一行,而沒有更多。

嘗試:

$stmt->fetchAll(PDO::FETCH_ASSOC);