PDO 显示表数组

Posted

技术标签:

【中文标题】PDO 显示表数组【英文标题】:PDO SHOW TABLES array 【发布时间】:2013-04-19 06:50:52 【问题描述】:

仅使用此功能并没有按计划运行。它应该获取数据库中的所有表名并将它们存储在一个数组中。然而,数组的结果是使数组加倍,如下例所示:

Array ( [0] => 113340 ) 
Array ( [0] => 113340 [1] => 116516 ) 
Array ( [0] => 113340 [1] => 116516 [2] => 139431 ) 
Array ( [0] => 113340 [1] => 116516 [2] => 139431 [3] => 20731 ) 
Array ( [0] => 113340 [1] => 116516 [2] => 139431 [3] => 20731 ... )

我正在使用的代码:

function itemDiscontinued($dbh, $id, $detail) 
  try 
    $tableList = array();
    $result = $dbh->query("SHOW TABLES");
    while ($row = $result->fetch(PDO::FETCH_NUM)) 
      $tableList[] = $row[0];
      print_r($tableList);
    
  
  catch (PDOException $e) 
    echo $e->getMessage();
  

【问题讨论】:

+1 删除某人添加的反对票。这个问题没有错,只是代码中的一个简单错误。用户已经在提出问题方面表现出研究和努力,所以绝对没有必要投反对票! 【参考方案1】:

要获得所有表的名称,这要好得多

public function list_tables()

    $sql = 'SHOW TABLES';
    if($this->is_connected)
    
        $query = $this->pdo->query($sql);
        return $query->fetchAll(PDO::FETCH_COLUMN);
    
    return FALSE;

【讨论】:

【参考方案2】:

您正在 while 循环中打印数组!每次您从记录集中向其中添加项目时,这将打印它。相反,您需要在完成填充后打印它,如下所示:

function itemDiscontinued($dbh, $id, $detail) 
    try    
        $tableList = array();
        $result = $dbh->query("SHOW TABLES");
        while ($row = $result->fetch(PDO::FETCH_NUM)) 
            $tableList[] = $row[0];
        
        print_r($tableList);
    
    catch (PDOException $e) 
        echo $e->getMessage();
    

【讨论】:

啊,真傻!我仍然在这里学习,但无论如何,非常感谢 Ben! @DrDogN 一点也不。最简单的错误总是最难发现! :-)

以上是关于PDO 显示表数组的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP / PDO 更新表迭代数组 [重复]

PDO:显示表键无法正确绑定参数[重复]

如何从 pdo 语句中显示数组的所有值?

PDO fetchAll 返回空数组,但是可以显示count数量?

MySQL PDO fetchAll 作为具有整数索引的数组

加入表时PDO fetch_assoc [重复]