Следующая функция предназначена для получения таблиц в базе данных.
$check = $fsdbh->query('show tables')->fetch();
Его нельзя подсчитать, потому что в нем есть дополнительный слой, имя базы данных.
print_r ():
Array ( [Tables_in_dbtest] => test [0] => test )
Поэтому нам нужно сделать еще один шаг в массиве и просто подсчитать количество баз данных. Как мы это сделаем.
Стиль выборки по умолчанию – PDO::FETCH_BOTH
, вам нужно PDO::FETCH_ASSOC
или PDO::FETCH_NUM
.
Дополнительную информацию см. В документации на fetch
.
Этот код должен работать на вас:
$check = $fsdbh->query('show tables')->fetch(PDO::FETCH_NUM);
Еще одна вещь, которую вы можете сделать, – изменить стиль выборки по умолчанию с помощью PDO :: setAttribute до PDO::FETCH_ASSOC
после подключения к вашей базе данных.
$dbh = new PDO('...'); $dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
Правильный способ – это сделать
SELECT count(*) FROM INFORMATION_SCHEMA WHERE TABLE_SCHEMA='yourdbname';