奇怪的PHP输出

时间:2011-01-16 21:26:36

标签: php mysql for-loop

我正在使用此代码尝试获取表名并将其存储在变量中。

<?php
connectDB();
$sql = "SHOW TABLES";
$result = mysql_query($sql);
$tables = mysql_fetch_array($result);
    foreach ($tables as $table) {
        $table_name = $table[0];
        echo $table_name;
    }
closeConn();
?>

首先,它输出'aa'和'bb',如果我改变数组索引,我知道数据库中的表名和两个,我想要做的是为数据库中的每个表运行一些代码并插入将表名转换为可以在所述代码中使用的变量?我该怎么做?

3 个答案:

答案 0 :(得分:3)

$tables = mysql_fetch_array($result);

mysql_fetch_array获取一行,而不是整行。这意味着当您执行$table[0]时,您实际上正在处理行中每个字段的字符串值。

您应该将mysql_fetch_array放在循环中:

while ($table = mysql_fetch_array($result)) {
    $table_name = $table[0];
    echo $table_name;
}

答案 1 :(得分:1)

SHOW TABLES返回一个表,每行有一个表名。您应该使用mysql_fetch_array与表中的行一样多次,因为它只检索表的一行 ...

想想这样的事情:

while($row = mysql_fetch_array($result)) {
    $table_name = $row[0];
    // ...
}

答案 2 :(得分:0)

$ sql =“SHOW TABLES”; $ result = mysql_query($ sql);

while ($row = mysql_fetch_array($result, MYSQL_BOTH))
{
    $tables[] = $row[0];
}

// To Display
foreach ($tables as $table) {

    $table_name = $table;
    echo $table_name;
}