2011-06-14 5 views
1

J'ai une déclaration utilisée avec AOP qui est comme suit:PHP AOP et clause IN

$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) 
          "); 

Maintenant, la déclaration est exécuté, mais il seulement grappins résultats pour pa.pid = 2, ou la dernière valeur de celles données . Quelqu'un pourrait-il m'expliquer cela pour moi? Je me attendais à un tableau de résultats à la fois id's 1 and 2 cependant ce que les sorties Array ([tid] => 2 [rate] => 7.30 [name] => Something)

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

Merci

+0

comment vous allez chercher des lignes? – piotrm

+0

Mis à jour la question :) – grep

Répondre

4

$stmt->fetch va chercher une seule ligne à la fois. Utilisez fetchAll pour renvoyer le jeu de résultats complet

+0

Vous rock! (Comme vous pouvez le voir, je suis nouveau à PDO) – grep

3

Il semble que vous n'appelez qu'une seule fois fetch. Cela signifie que vous obtenez la première ligne de la requête et pas plus.

Essayez:

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