如何搜索数据库中所有表中包含当前月份的日期的所有记录?

时间:2015-04-01 23:26:30

标签: php mysql pdo

我有一个名为db_contacts的数据库,它包含用于存储各个联系人的每个帐户的表格。每个表的格式都相同,一个日期列称为birthday

我希望能够做的是搜索db_contacts中每个表中的每条记录,查找月份等于当月的日期。
有没有办法只使用一个查询,或者我必须分别查询每个表?我真的不知道如何做到这一点。

我在想这样的事情,但这根本不起作用:

$connection = new PDO("mysql:host=localhost", "foo", "bar");

$month = date("m");

$db = $connection->prepare("
    SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'birthday'");
$db->execute();

foreach ($db as $table) {
    for ($i = 0; $i < sizeof($table); $i++) {
        $db = $connection->prepare("
            SELECT birthday FROM $table[$i] WHERE MONTH('birthday') = $month;");
        $db->execute();

        foreach ($db as $row) {
            echo $row[0];
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我终于通过以下方式使用它了:

$db = $connection->prepare("
    SELECT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE COLUMN_NAME LIKE 'birthday'");
$db->execute();

$month = date("m");

foreach ($db as $table) {
    $db = $connection->prepare("
        SELECT birthday 
        FROM db_contacts.$table[0] 
        WHERE MONTH(birthday) = $month;");
    $db->execute();

    foreach ($db as $record) {
        echo $record[0];
    }
}