13

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

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();
  }
}
4

2 回答 2

21

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

public function list_tables()
{
    $sql = 'SHOW TABLES';
    if($this->is_connected)
    {
        $query = $this->pdo->query($sql);
        return $query->fetchAll(PDO::FETCH_COLUMN);
    }
    return FALSE;
}
于 2014-12-14T08:26:45.080 回答
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();
    }
}
于 2013-04-25T11:43:05.697 回答