0

我有一个这样的数据库:

banner     |  image  |  date
------------------------------
123_first  |  xxxxx  |  date
123_second |  xxxxx  |  date
134_foo    |  xxxxx  |  date
134_foo    |  xxxxx  |  date
134_bar    |  xxxxx  |  date

我需要得到:

banner     |  image  |  date
-----------------------------
134_foo    |  xxxxx  |  date
134_bar    |  xxxxx  |  date

当我选择一个特定的 ID(134)。所以我只需要在每个横幅的第一次出现时获取所有横幅 id。

我正在使用这个 PDO 语句,但它没有返回任何内容:

$sth = $dbh->prepare('SELECT `banner` FROM `abanners` WHERE `banner` LIKE ? ORDER BY `date` DESC GROUP BY `banner`');
$sth->execute(array($user["id"] . "%"));

结果应该是:

Array('134_foo', '134_bar');

我该如何解决这个问题?

4

2 回答 2

1

尝试

$id = $user["id"];
$sth = $dbh->prepare('SELECT `banner` FROM `abanners` 
                     WHERE `banner` LIKE ? ORDER BY `date` DESC GROUP BY `banner`');
$sth->execute(array("$id%"));
于 2013-09-21T17:57:09.673 回答
0

如果你有一个唯一的 ID,你可以得到一个像这样的“横幅”数组:

$sth = $dbh->prepare('SELECT `ID-hope_you_have_one`, `banner` FROM `abanners` WHERE `banner` LIKE ? ORDER BY `date` DESC GROUP BY `banner`');

$sth->execute(array($user["id"] . "%"));

$array_indexed_by_id = $sth->fetchAll(PDO::FETCH_KEY_PAIR);
于 2013-09-21T13:14:15.853 回答