检查数据库中是否存在表的问题

时间:2012-08-23 18:35:14

标签: php mysql

基本上我有我的MySQL dbname = test和我的表名= page。

我想使用php PDO创建一个查询来检查我的数据库“test”中是否存在表“page”

我已经尝试了这两件事,但它确实有效..第一个例子总是告诉我它不存在..即使它确实存在于我的数据库中,第二个例子告诉我它总是存在..即使它不存在......

$db = new PDO('mysql:host=' . $DB_SERVER . ';dbname=' . $DB_NAME, $DB_USER, $DB_PASS);

if (array_search('pages', $db->query('show tables')->fetch()) !== false) {
    echo "the db exists";
} else {
    echo "the db doesnt exists";
}

我也试过这个

$results = $db->query('SHOW TABLE LIKE \'page\'');
if (count($results) > 0) {
    echo 'table exists';
} else {
    echo "it doesnt";
}

2 个答案:

答案 0 :(得分:3)

怎么样:

$results = $db->query('SHOW TABLES LIKE \'page\'');
if (count($results->fetchAll()) > 0) {
    echo 'table exists';
} else {
    echo "it doesnt";
}

答案 1 :(得分:0)

确保您的用户有权访问information schema数据库,然后执行以下操作:

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'database_to_search'
AND TABLE_NAME LIKE "table_here%" 

然后抓住并检查结果。使用上述内容,如果需要,还允许您限制响应(偏移,限制)。