Mostrando todos los nombres de tabla en php desde la database MySQL

De acuerdo, soy bastante nuevo en PHP y SQL / MySQL, así que cualquier ayuda es apreciada.

Siento que tomé el enfoque correcto. Busqué php.net para "MySQL show all table names", devolvió un método obsoleto y sugerí usar una consulta MySQL en SHOW TABLES [FROM db_name] [LIKE 'pattern'] No estoy seguro de qué significa "pattern", pero Busqué "comodín SQL" 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 errores La salida es exactamente lo que se repite, pero no hay nombres de tabla.

Los corchetes en su código se usan en la documentation de mysql para indicar grupos de parameters opcionales. No deberían estar en la consulta real.

El único command que realmente necesitas es:

 show tables; 

Si quiere tablas de una database específica, digamos la database "libros", entonces sería

 show tables from books; 

Solo necesita la parte LIKE si desea search tablas cuyos nombres coincidan con un patrón determinado. p.ej,

 show tables from books like '%book%'; 

le mostraría 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 command-line (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. Pruebe este código después de conectarse a su database:

 $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. } 

Para las personas que usan declaraciones PDO

 $query = $db->prepare('show tables'); $query->execute(); while($rows = $query->fetch(PDO::FETCH_ASSOC)){ var_dump($rows); } 
 SHOW TABLES 

mostrará todas las tablas en su db. Si quiere filtrar los nombres, usa LIKE y comodín %

 SHOW TABLES FROM my_database LIKE '%user%' 

le dará todas las tablas cuyo nombre incluye 'usuario', por ejemplo

 users user_pictures mac_users 

etc.

Los corchetes que se usan comúnmente en la documentation de mysql para ejemplos deben omitirse en una consulta 'real'.

Tampoco parece que te estés 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.

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

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

Claro que puede consultar su Base de datos con SHOW TABLES y luego recorrer todos los loggings, pero eso es líneas de código adicionales y trabajo.

PHP tiene una function incorporada para listr todas las tablas en una matriz:

mysql_list_tables – puede encontrar más información al respecto en la página API de PHP

Las consultas deben verse así:

 SHOW TABLES SHOW TABLES FROM mydatabase SHOW TABLES FROM mydatabase LIKE "tab%" 

Las cosas de la documentation de MySQL entre corchetes [] son ​​opcionales.