Php PDO fetch只返回第一行
我使用以下代码连接数据库,获取Php PDO fetch只返回第一行,php,mysql,pdo,Php,Mysql,Pdo,我使用以下代码连接数据库,获取Data\u length索引列,并根据数据计算数据库大小 出于某种原因,PDO将始终返回“0”,这是第一行中数据长度的值。无论我做什么,我只得到第一行索引 数据库是MySQL,MyISAM引擎 PHP版本:5.5.38 MySQL版本:5.5.50 这是源代码 <!DOCTYPE html> <head> <title></title> </head> <body> <?php try
Data\u length
索引列,并根据数据计算数据库大小
出于某种原因,PDO将始终返回“0”,这是第一行中数据长度的值。无论我做什么,我只得到第一行索引
数据库是MySQL,MyISAM引擎
PHP版本:5.5.38
MySQL版本:5.5.50
这是源代码
<!DOCTYPE html>
<head>
<title></title>
</head>
<body>
<?php
try {
error_reporting(-1);
$host_name = "my_host";
$database = "my_db";
$user_name = "my_user";
$password = "my_pwd";
$conn = new PDO("mysql:host=$host_name;dbname=$database", $user_name, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sth = $conn->query('SHOW TABLE STATUS');
$dbSize = 0;
$row = $sth->fetch(PDO::FETCH_ASSOC);
$dbSize = $row["Data_length"];
$decimals = 2;
$mbytes = round($dbSize/(1024*1024),$decimals);
echo $dbSize . "\n" . $row["Data_length"];
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
</body>
</html>
添加一个while循环
while($row= $sth->fetch( PDO::FETCH_ASSOC )){
echo $row['your_field_name'];
}
或者您可以使用fetchAll
$rows = $sth->fetchAll();
print_r($rows);
因为fetch
总是返回一行。试着不时地阅读手册……你确实需要阅读手册^^^^^^^,但要开始阅读,也许会帮助你完成这一特定任务issue@Fred,这个问题并不完全是另一个问题的重复。另一个是错误的,因为它声明Data_length返回“0”。这个问题是不同的。请重新打开这一个,这样我就可以删除另一个。@nospor,事实上我已经这样做了,我也已经尝试了fetchAll等。这不是我需要的方法。而且,我已经读过一些关于如何获得数据库大小的其他问题,它们或多或少都是以这种方式处理的。此外,此代码来自另一个被检查为正确答案的问题:/。我刚刚添加了错误处理和我的凭据。对不起,我看不出这两个问题的代码有什么不同。谢谢你的建议,但我已经尝试过类似的方法。但是,如果你看一下我的源代码,你会发现我只是想计算数据库的大小,就像我以前做的一样,现在它不起作用是非常罕见的。我选择这个作为正确的答案,因为它与这个问题基本相符,即使它不是我所需要的。然而,我找到了一个解决办法,现在一切都很好。不得不使用不同的SQL查询,但最终实现了我的目标为什么while()
只返回一行?(我正在将mysqli准备的语句转换为PDO)