Как найти имя базы данных источника для поля в наборе результатов в PHP / MySQL API? - PullRequest
1 голос
/ 10 ноября 2010

Мне нужно найти имя базы данных, откуда приходит поле.

В MySQL C API имя базы данных можно получить с помощью API mysql_fetch_field . Возвращает структуру MYSQL_FIELD , которая содержит char * db.

Но я не могу найти ничего, чтобы достичь этого. Версия PHP mysql_fetch_field не содержит информации базы данных. Есть идеи, как мне это сделать?

Я также хочу решение для mysqli.

1 Ответ

0 голосов
/ 10 ноября 2010

Хммм, вы можете запрограммировать функцию для поиска, но это будет довольно сложно:

Сначала используйте mysql_fetch_field, чтобы найти родительскую таблицу для поля, затем ...

Запустите SQL ' ПОКАЗАТЬ БАЗЫ ДАННЫХ ', чтобы получить список баз данных для используемого соединения:

SHOW {DATABASES | SCHEMAS}
    [LIKE 'pattern' | WHERE expr]

Используйте PHP для циклического прохождения каждой базы данных, для каждого запуска SQL для показа базовых таблиц :

SHOW [FULL] TABLES [{FROM | IN} db_name]
    [LIKE 'pattern' | WHERE expr]

Если таблица найдена с тем же именем, что и mysql_fetch_field, в качестве дополнительной защиты от дубликатов используйте ОПИСАТЬ , чтобы проверить, содержит ли оно ожидаемое поле

{DESCRIBE | DESC} tbl_name [col_name | wild]

Если вы получили совпадение, у вас есть БД. Это не надежно, но оно должно быть достаточно надежным для большинства развертываний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...