PHPを使用してmysqlクエリですべてのテーブルを検出したい。通常のクエリで機能する mysql_field_table() 関数を見ました。しかし、テーブルに代替名 ( table_name AS new_name ) を使用すると、正規表現で修正しても、実際の名前ではなく代替名が返されます。しかし今、私の問題は次のような高度なクエリにあります:
SELECT mail_id, mail_date, mail_from, mail_to, mail_subject, (
(
SELECT COUNT(*)
FROM `sys_messagecenter_qmails`
WHERE qmail_mail_id = mail_id
) + (
SELECT COUNT(*)
FROM `sys_messagecenter_rels`
WHERE rel_mail_id = mail_id
)
) AS email_total, (
SELECT COUNT(*)
FROM `sys_messagecenter_rels`
WHERE rel_mail_id = mail_id
) AS email_sent, (
SELECT COUNT(*)
FROM `sys_messagecenter_rels`
INNER JOIN `sys_email_receives` ON receive_reply_to = rel_sent_id
WHERE rel_mail_id = mail_id
) AS email_reply FROM `sys_messagecenter_emails` WHERE mail_draft='No'
ORDER BY mail_id ASC LIMIT 0,10
今、クエリで実際のテーブル名をすべて検出するには、正規表現が必要だと思います。または他の完璧なソリューション。これどうやってするの?