2

在找不到正确方向的 1 个下午后,我希望有人能帮助我。

我想要的是:将数组绑定到 PDO 执行语句。因此我在 PREPARE 中使用 WHERE IN 语句。到目前为止一切顺利,我现在的问题是,数字不是唯一的。在我的数据库中有更多具有此值的行。我需要一种方法将查询限制在第一个找到的 nummer fe = 1 的行,然后转到数组的下一个值。

这是代码(我在stackoverflow上找到的;)

$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 />";
    }  
4

1 回答 1

3

我相信你想GROUP BY nummer在你的WHERE条款之后添加。

$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 . ')
  '  
);
于 2012-08-14T14:25:12.463 回答