2012-08-14 104 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

相关问题