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 显示表数组的主要内容,如果未能解决你的问题,请参考以下文章
PDO fetchAll 返回空数组,但是可以显示count数量?