2012-08-14 36 views
2

經過1個下午找不到正確的方向我希望somone能幫助我。PHP PDO選擇並輸出第一個找到的行結果

我想要的是: 將數組綁定到PDO執行語句。因此我使用PREPARE中的​​WHERE IN語句。到目前爲止這麼好,現在我的問題是,nummer不是唯一的。在我的數據庫中有更多的這個值的行。我需要一種方法來限制查詢第一個找到的行,其中nummer f.e. = 1,然後轉到數組的下一個值。

這裏是代碼(我發現這裏的計算器;)

$ids  = array(1, 2, 3, 7, 8, 9); 
$inQuery = implode(',', array_fill(0, count($ids), '?')); 


$stmt = $objDb->prepare(
    'SELECT * 
    FROM table 
    WHERE nummer IN(' . $inQuery . ')' 
); 

$stmt->execute($ids); 

while($row = $stmt->fetch()) { 

     echo $row['name'] . "<br />"; 
    } 

回答

3

我相信你想你的WHERE條款後添加GROUP BY nummer

$stmt = $objDb->prepare(
    'SELECT * 
    FROM table 
    WHERE nummer IN(' . $inQuery . ') 
    GROUP BY nummer 
    ' 
); 

編輯

Postgres的嘗試:

$stmt = $objDb->prepare(
    'SELECT DISTINCT ON (nummer) nummer, * 
    FROM table 
    WHERE nummer IN(' . $inQuery . ') 
    ' 
); 
+2

我喜歡使用的 「nummer」;這就像「數字」,但更快,它有更多的反應。 – Matt 2012-08-14 14:27:01

+1

但它危險地接近「無賴」 – Martin 2012-08-14 14:27:38

+0

@Matt +1讓我像孩子一樣g :) :) – Fluffeh 2012-08-14 14:28:00

相關問題