我正在尝试显示数据库中表的名称。我写了这段代码:
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;
}
它只给我最后一张桌子?
对于没有参数和 SQL 硬编码的简单查询,您可以使用通用函数将连接和 SQL 传递给函数。 以下函数 () 返回一个包含结果集中所有行的数组。
function queryAll($db,$query){
$sth = $db->query($query);
$result = $sth->fetchAll(PDO::FETCH_NUM);
return $result;
}
对于没有参数和 SQL 硬编码的简单查询,您可以使用通用函数将连接和 SQL 传递给函数。 以下函数 () 返回一个包含结果集中所有行的数组。
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);
public function fetchFields(): ?array
{
$row = $this->fetch();
return $row ? array_values((array) $row) :
null;
}
使用这个小方法代替 fetchAll()。
每次循环结果时,都会覆盖变量
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;
}
试试这个 `
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;
}
`
我希望它能起作用... 这里你的数组每次都会被过度认知...这就是你获得最后一个表名的原因...所以你需要附加到现有的数组...