Hmm, borde kunna använda funktionen preg_match_all, men hur ska mitt pattern se ut? Hmm... Någon?
Jag vill, via ett PHP-script, veta vad en viss foreign key har för namn i min databastabell.
Hittade denna funktion för MySql-frågan i terminalen:
show create table
Som ger mig något i stil med:
host_contacts | CREATE TABLE `host_contacts` (
`id` int(11) NOT NULL auto_increment,
`host_id` int(11) NOT NULL,
`contact_id` int(11) NOT NULL,
`updated_by_id` int(11) default NULL,
`updated_time` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_host_contacts_unique` (`host_id`,`contact_id`),
KEY `updated_by_id` (`updated_by_id`),
KEY `contact_id` (`contact_id`),
CONSTRAINT `host_contacts_ibfk_1` FOREIGN KEY (`updated_by_id`) REFERENCES `users` (`id`) ON DELETE SET NULL,
CONSTRAINT `host_contacts_ibfk_2` FOREIGN KEY (`host_id`) REFERENCES `hosts` (`id`) ON DELETE CASCADE,
CONSTRAINT `host_contacts_ibfk_3` FOREIGN KEY (`contact_id`) REFERENCES `contacts` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=latin1 |
Så långt är jag med. Men hur ska mitt PHP script se ut för att få ut t.ex. namnet på foreign key för kolumnen "host_id"??
Jag vill kunna göra något i stil med:
function getFKname('host_contacts', 'host_id', 'hosts', 'id')
{
// ...
}
echo 'FK name is: ' . getFKname('host_contacts', 'host_id', 'hosts', 'id');
Som alltså i detta fall ska skriva ut:
FK name is: host_contacts_ibfk_2
En tuff nöt att knäcka! Tack för hjälp!