0
我有一个名为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];
}
}
}
我倾向于认为你可以消除FOR($ 1 =。。。)循环,然后在每个表上执行第二次选择FOREACH($ db ...。steps),并且可能不会在FOREACH循环中重新定义$ db – BigScar 2015-04-01 23:40:43
我应该问一下为什么你对每个账户都有不同的表格?你可能会修复这些代码,但是它会很多在一个查询中更有效地完成它。我的Mysql虽然不够好。 – 2015-04-01 23:45:52
@TonyHopkinson我原本打算把所有账户的所有联系人都放在同一个表格中,但是认为将它们组织起来更好。 – 2015-04-01 23:52:44