【问题标题】:Problems checking whether a table exist or not in the db检查数据库中是否存在表的问题
【发布时间】:2012-08-19 08:16:02
【问题描述】:

基本上我有我的 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";
}

【问题讨论】:

  • 这对你的问题没有帮助,但你能选择一个一致的报价风格吗?您非常随意地使用"'。选择其中一个并在整个代码中使用它。

标签: php mysql


【解决方案1】:

怎么样:

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

【讨论】:

  • 它有效。谢谢你。我仍然不知道为什么它在前一个不起作用...几乎相同
【解决方案2】:

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

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

然后抓取并检查您的结果。如果您需要,使用上述方法还可以限制您的响应(偏移量、限制)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2016-06-13
    • 1970-01-01
    • 2017-03-31
    相关资源
    最近更新 更多