Php mysql Show tables返回所有+1,表“行数”作为第一个值

Php mysql Show tables返回所有+1,表“行数”作为第一个值,php,mysql,Php,Mysql,当我最近想用php列出数据库中的所有表时,我做了一个简单的MySQL查询: $tables_query = mysql_query('show tables'); while ($test = mysql_fetch_array($tables_query)) { echo "Table: {$test[0]}<br />"; } 我没有一个名为TABLES 105的表,但mysql_num_行也显示有105个结果,即使我的数据库只包含104个表 如果我尝试直接在MySql

当我最近想用php列出数据库中的所有表时,我做了一个简单的MySQL查询:

$tables_query = mysql_query('show tables');
while ($test = mysql_fetch_array($tables_query)) {
    echo "Table: {$test[0]}<br />";
}
我没有一个名为TABLES 105的表,但mysql_num_行也显示有105个结果,即使我的数据库只包含104个表

如果我尝试直接在MySql服务器上请求显示表,它工作正常,结果得到104行。它以前也有用,我似乎找不到任何关于它的东西,所以我希望有人能在这里帮助我

它还影响我直接调用mysql服务器的时间。我在同一台服务器上通过另一个用户登录访问了另一个数据库,这里没有任何问题。

105最初是如何到达那里的,这很可能是由mysql_num_rows函数引起的,您提到的fetch_array实际上是获取行的,但在MySQLi上有一个,停止使用MySQL:

$db = 'test'; // database name
$con = mysqli_connect('localhost', 'username', 'password', $db);
$tables_query = mysqli_query($con, "SHOW TABLES FROM {$db}");
while($table = mysqli_fetch_assoc($tables_query)) {

    echo $table["Tables_in_{$db}"], '<br/>';
}

什么是tep_db_fetch_数组是某种伪抓取方法,还是您创建了自定义函数?不管怎么说,你需要展示整个过程code@Ghost我刚刚修改了它,所以它是正确的mysql\u fetch\u数组,结果是相同的。仍然有问题,tep\u db\u query你有一些mysql的包装函数吗?如果它确实像mysql_查询一样提供服务,那么这个有问题的代码缺少一些部分,从我的角度来看,很难确定问题是什么。对不起,我完全监督了它-我将它更改为普通的mysql_查询,它仍然返回第一个值,如表105所示。定制功能只是为了让我知道每个请求需要多长时间。请注意,mysql_uu函数现在不再像过去几年那样受到阻碍,而是正式的。您应该真正使用或,因为这段代码很快就会停止工作。有关更多信息,请参阅。已按要求完成。同样的结果。没有原始系统中的包含,只是一个普通的PHP文件,上面的代码替换为我正确的登录数据。@CasperO我对它做了一点修改,不管怎样,您是否有权实际显示该数据库中的所有表?我有权添加/删除/更改/显示表。当我使用一个桌面程序连接到数据库并在它列出104个表的地方进行查询时,它甚至可以正常工作,正如我刚才看到的2。选项,但在第一个选项中仍然返回表105row@CasperO哇,你的情况真奇怪,这是唯一一个不起作用的抓人方法吗?普通的SELECT*FROM表格名称查询怎么样?
$db = 'test'; // database name
$con = mysqli_connect('localhost', 'username', 'password', $db);
$tables_query = mysqli_query($con, "SHOW TABLES FROM {$db}");
while($table = mysqli_fetch_assoc($tables_query)) {

    echo $table["Tables_in_{$db}"], '<br/>';
}
$db = 'test'; // database name
$con = mysqli_connect('localhost', 'root', '', $db);
$tables_query = mysqli_query($con, "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{$db}'");
while($table = mysqli_fetch_array($tables_query)) {
    echo $table['TABLE_NAME'], '<br/>';
}