show tables只获取表的姓氏

时间:2016-05-08 16:12:54

标签: mysql pdo

我试图在我的数据库中显示表的名称。我写这段代码:

   function affiche_liste()
{   
$db=new PDO('mysql:host=localhost;dbname=testf','root','');
    $result = $db->query("SHOW TABLES");
       foreach($result->fetch(PDO::FETCH_NUM) as $data) {
            $tableList = $data[0];
        }
        return $tableList;
}

它只给我最后一张桌子?

3 个答案:

答案 0 :(得分:0)

对于没有参数的简单查询和SQL硬编码,您可以使用将连接和SQL传递给函数的泛型函数。 以下function()返回一个包含结果集中所有行的数组。

function queryAll($db,$query){  
    $sth = $db->query($query);
    $result = $sth->fetchAll(PDO::FETCH_NUM);
    return $result;
}

对于没有参数的简单查询和SQL硬编码,您可以使用将连接和SQL传递给函数的泛型函数。 以下function()返回一个包含结果集中所有行的数组。

function queryAll($db,$query){  
    $sth = $db->query($query);
    $result = $sth->fetchAll(PDO::FETCH_NUM);
    return $result;
}

$db=new PDO('mysql:host=localhost;dbname=testf','root',''); 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = "SHOW TABLES";
$tables = queryAll($db,$query);
print_r($tables);   

答案 1 :(得分:-1)

每次循环结果时,您都会覆盖变量tableList。相反,您需要附加到一组结果。

function affiche_liste()
{   
    $db=new PDO('mysql:host=localhost;dbname=testf','root','');
    $result = $db->query("SHOW TABLES");
    $tableList = array();
    foreach($result->fetch(PDO::FETCH_NUM) as $data) {
        array_push($tableList, $data[0]);
    }
    return $tableList;
}

答案 2 :(得分:-1)

试试这个 `

function affiche_liste()
{$db=new PDO('mysql:host=localhost;dbname=testf','root','');
    $result = $db->query("SHOW TABLES");
       foreach($result->fetch(PDO::FETCH_NUM) as $data) {
            $tableList[] = $data[0];
        }
        return $tableList;
}

`

我希望它能奏效...... 这里你的数组每次都会被覆盖......这就是你得到最后一个表名的原因....所以你需要追加现有的数组......