私がやっていることは、mysqlデータベースの更新テーブルからPHPを使ってエントリを取得することです。各エントリには、タイムスタンプが添付されています。最初に、タイムスタンプから10個の異なる日付を取得し、10個のユニークな日付を使用して新しい配列を作成します(fetchAllは日付を多次元配列に入れているため、これを行います)。これは10以上のエントリを返すことができます。 10個の別々のタイムスタンプではなく、10個の別個の日付が必要です。例えばMySQLは別の日付で制限付きで、日付は制限付きですが、エントリはありません
2012-03-25が異なる日付から最初の呼び出しに現れた場合、それは見つけることができる:
2012-03-25 00:58:53
2012-03-25 00:58:02
2012-03-25 00:57:20
2012-03-25 00:56:35
2012-03-25 00:55:58
2012-03-25 00:53:20
2012-03-25 00:52:32
2012-03-25 00:51:45
タイムスタンプが異なるため。
ここに私が使用している現在のコードがあります。
$test = $dbh->getArray("SELECT DISTINCT DATE_FORMAT(added, '%Y-%m-%d') AS added FROM db_updates ORDER BY added DESC LIMIT 0,10");
foreach ($test as $entry) {
list($date) = $entry;
$output[] = '\''.$date.'\'';
}
$test2 = $dbh->getArray("SELECT * FROM db_updates WHERE DATE_FORMAT(added, '%Y-%m-%d') IN (".implode(',', $output).") ORDER BY added DESC");
print_r($test2);
これは33の結果を返しました。
誰かが尋ねる場合は、PHPでmysql関数ではなくPDOを使用しています。そのコードはここにあります:
public function getArray($query) {
$result = $this->db->query("$query");
return $result->fetchAll(PDO::FETCH_NUM);
}
これはすべて100%動作し、私がしたいことをします。しかし、私の質問は、これをすべて単一のmysql呼び出しで行う方法があるため、中間でループを2回呼び出す必要はありません。
ジョイントなどを使ってGoogleを検索し、試行錯誤して自分自身を見つけ出そうとしました。
パーフェクト。ありがとう:)私は答えとしてこれを受け入れることができる前に7分以上待つ必要があります。 – WMI