La búsqueda de PDO devuelve solo la primera fila [duplicado]
Esta pregunta es un duplicado exacto de:
PHP PDO Data_length siempre devuelve "0" 1 respuestaACTUALIZACIÓN 2: Le pedí amablemente que desmarcara esta pregunta como duplicada, ya que no es un duplicado de la otra pregunta, que después de algunas investigaciones descubrí el problema y proporcioné una respuesta efectiva, que la persona que marcó mi pregunta como duplicada no proporcionó afirmando que El código funcionó para él. Bueno, está funcionando para él, pero no está funcionando para mí. También leí muchas preguntas en las que cuando alguien prueba el código y funciona para él, solo pone una nota en los comentarios como este "Esto funciona para mi", o algo similar. Y en lugar de marcar mi pregunta y luego publicar el siguiente comentario:
"lo que debería haber hecho, fue editar su otra pregunta, en lugar de volver a publicar con el mismo código. Lo siento, pero no volveré a abrir la pregunta. Ayer publiqué algunos comentarios debajo de su otra pregunta, pero no me molesté en responder, así que terminé eliminándolos. Afirmando que no había nada malo con su código desde que lo probé."
.. tal vez lo que debería hacer es solo un consejo en los comentarios y muy probablemente podría haber editado mis dos preguntas, en lugar de tener que "discutir" y quejarme solo porque quiero eliminar mi pregunta, que ahora es imposible, y si Publico otra pregunta, obviamente también se marcará como Duplicado. Esto es muy desafortunado. Tampoco veo esto.La búsqueda de PDO devuelve solo la primera fila como un duplicado de estoPHP PDO Data_length siempre devuelve "0"
PREGUNTA ORIGINAL: Estoy usando el siguiente código para hacer una conexión a la base de datos, busque elData_length
columna de índice y calcule el tamaño de la base de datos en función de los datos.
Por alguna razón, PDO siempre devolverá "0", que es el valor paraData_length
índice en la primera fila. Haga lo que haga, solo obtengo el índice de las primeras filas.
La base de datos es MySQL, el motor MyISAM.
Versión de PHP: 5.5.38
Versión de MySQL: 5.5.50
ACTUALIZACIÓN 1: Bueno, como esta pregunta se marcó como duplicado deesta uno, me vi obligado a cambiar el código fuente. El siguiente es el nuevo código fuente que funciona bien en un hosting, pero que solo devuelve la primera fila en otro.
// START GET DATABASE SIZE
// Connect to database
$conn = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
// Execute query
$stmt = $conn->query('SHOW TABLE STATUS');
// Get size from array
$size = $stmt->fetch(PDO::FETCH_ASSOC)["Data_length"];
// Set values to variables for use
$decimals = 4;
$mbytes = round($size/(1024*1024),$decimals);
$kilobytes = round(($size / 1024) * 10);
echo $kilobytes;
// END GET DATABASE SIZE
El antiguo código fuente: He copiado este código deesta respuesta ya que fue aceptado como trabajando. No pude comentar allí ya que no tengo suficiente reputación.
<!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>