2012-03-27 14 views
8

Muy bien, entonces soy bastante nuevo en PHP y SQL/MySQL así que cualquier ayuda es apreciada.Mostrando todos los nombres de tabla en php desde la base de datos MySQL

Siento que tomé el enfoque correcto. Busqué php.net para "MySQL show all table names", devolvió un método en desuso y sugirió usar una consulta MySQL en SHOW TABLES [FROM db_name] [LIKE 'pattern'] No estoy seguro de qué significa "patrón", pero busqué "SQL Wildcard" y obtuve el " % "símbolo. De acuerdo con todo lo que encontré, esto debería funcionar y mostrar los nombres de la tabla al final, pero no es así. ¿Alguna sugerencia? Gracias por adelantado.

<?php 
if ($_REQUEST["username"]=="coke"&&$_REQUEST["password"]=="pepsi"){ 
echo 'You have successfully logged in.'; 
echo '<br />'; 
echo 'These are your tables:'; 
echo '<br />'; 

    $link = mysql_connect("sql2.njit.edu", "username", "password"); 

    mysql_select_db("db_name") or die(mysql_error()); 

    $result = mysql_query('SHOW TABLES [FROM db_name] [LIKE '%']'); 
    echo $result; 
} 
else 
echo 'You did not provide the proper authentication'; 
?> 

No obtengo ningún error. La salida es exactamente lo que se repite, pero no hay nombres de tabla.

Respuesta

38

Los corchetes en su código se utilizan en la documentación de mysql para indicar grupos de parámetros opcionales. No deberían estar en la consulta real.

El único comando que realmente se necesita es:

show tables; 

Si desea tablas de una base de datos específica, digamos que las bases de datos "libros", entonces sería

show tables from books; 

Sólo es necesario la parte ME GUSTA si desea encontrar tablas cuyos nombres coincidan con un patrón determinado. Por ejemplo,

show tables from books like '%book%'; 

le mostrarán los nombres de las tablas que tienen "libro" en algún lugar del nombre.

Además, el solo hecho de ejecutar la consulta "mostrar tablas" no producirá ningún resultado que pueda ver. SQL responde a la consulta y luego la pasa a PHP, pero necesita decirle a PHP que la haga eco en la página.

Como parece que eres nuevo en SQL, te recomiendo ejecutar el cliente mysql desde la línea de comandos (o usar phpmyadmin, si está instalado en tu sistema). De esta forma, puede ver los resultados de varias consultas sin tener que pasar por las funciones de PHP para enviar consultas y recibir resultados.

Si tiene que usar PHP, aquí hay una demostración muy simple. Prueba este código después de conectarse a la base de datos:

$result = mysql_query("show tables"); // run the query and assign the result to $result 
while($table = mysql_fetch_array($result)) { // go through each row that was returned in $result 
    echo($table[0] . "<BR>"); // print the table that was returned on that row. 
} 
0

necesita asignar mysql_query a una variable (ej. $ Resultado), luego mostrar esta variable como lo haría con un resultado normal de la base de datos.

+0

Esto no funcionó. ¿Cualquier otra sugerencia? Actualicé mi pregunta para mostrar los cambios que sugirió. – EGHDK

+0

necesita repetir $ resultado como lo haría con un conjunto de resultados normal: 'while ($ row = mysql_fetch_array ($ result, MYSQL_NUM)) { echo $ row [0]; } ' –

+0

también creo que la sintaxis de SQL puede estar un poco apagada, como se mencionó en otra parte: deshágase de todo en los corchetes –

1

consultas debe verse como:

SHOW TABLES 

SHOW TABLES FROM mydatabase 

SHOW TABLES FROM mydatabase LIKE "tab%" 

Cosas de la documentación de MySQL entre corchetes [] son ​​opcionales.

1
SHOW TABLES 

mostrará todas las tablas de su base de datos.Si desea filtrar los nombres que utiliza LIKE y el comodín %

SHOW TABLES FROM my_database LIKE '%user%' 

le dará todas las tablas que de nombre incluyen 'usuario', por ejemplo

users 
user_pictures 
mac_users 

etc.

1

Los soportes que se se usan comúnmente en la documentación de mysql, los ejemplos deben omitirse en una consulta 'real'.

Tampoco parece que se esté haciendo eco del resultado de la consulta mysql en ningún lado. mysql_query devuelve un recurso mysql en caso de éxito. La página de manual de php también incluye instrucciones sobre cómo cargar el recurso de resultados de mysql en una matriz para hacer eco y otra manipulación.

6

Para las personas que están utilizando PDO statements

$query = $db->prepare('show tables'); 
$query->execute(); 

while($rows = $query->fetch(PDO::FETCH_ASSOC)){ 
    var_dump($rows); 
} 
0

Claro que se puede consultar su base de datos con SHOW TABLES y luego recorrer todos los registros, pero que es de líneas de código adicionales y el trabajo.

PHP ha construido en función de una lista de todas las tablas en una matriz para usted:

mysql_list_tables - usted puede encontrar más información al respecto en The PHP API page

+0

Esta función ahora se elimina por completo. – NaveenDA

1

// list_tables significa que la base de datos toda la tabla

$tables = $this->db->list_tables(); 
foreach ($tables as $table) 
{ 
    echo $table; 
} 
+5

Si va a responder una pregunta que ya tiene años, explique de qué manera su respuesta es mejor que las respuestas ya enumeradas o cómo ha cambiado el idioma para permitir su respuesta cuando antes no lo hacía. –

+0

list_tables significa base de datos toda la tabla –

Cuestiones relacionadas