web-dev-qa-db-fra.com

Afficher tous les noms de table en php depuis la base de données MySQL

Très bien, donc je suis assez nouveau sur PHP et SQL/MySQL, donc toute aide est la bienvenue.

Je sens que j'ai pris la bonne approche. J'ai cherché dans php.net "MySQL affiche tous les noms de table", il a renvoyé une méthode dépréciée et a suggéré d'utiliser une requête MySQL sur SHOW TABLES [FROM db_name] [LIKE 'pattern']. %" symbole. Selon tout ce que j'ai trouvé, cela devrait fonctionner et afficher les noms de table à la fin, mais ce n'est pas le cas. Aucune suggestion? Merci d'avance.

<?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';
?>

Je ne reçois aucune erreur. La sortie est exactement ce qui est renvoyé, mais pas de noms de table.

8
EGHDK

Les crochets dans votre code sont utilisés dans la documentation de mysql pour indiquer des groupes de paramètres facultatifs. Ils ne devraient pas être dans la requête réelle. 

La seule commande dont vous avez réellement besoin est:

show tables;

Si vous voulez des tables d'une base de données spécifique, disons que la base de données "livres", alors ce serait 

show tables from books;

Vous n’avez besoin de la partie LIKE que si vous voulez trouver des tables dont les noms correspondent à un certain modèle. par exemple., 

show tables from books like '%book%';

vous montrerait les noms des tables qui ont "book" quelque part dans le nom. 

De plus, le simple fait d'exécuter la requête "show tables" ne produira aucun résultat visible. SQL répond à la requête puis la transmet à PHP, mais vous devez indiquer à PHP de la faire écho à la page. 

Comme il semble que vous soyez très novice en SQL, je vous recommande d’exécuter le client mysql à partir de la ligne de commande (ou d’utiliser phpmyadmin, s’il est installé sur votre système). De cette façon, vous pouvez voir les résultats de diverses requêtes sans avoir à passer par les fonctions de PHP pour envoyer des requêtes et recevoir des résultats. 

Si vous devez utiliser PHP, voici une démonstration très simple. Essayez ce code après vous être connecté à votre base de données:

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

Pour les personnes qui utilisent Instructions PDO

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

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

// liste_tables signifie base de données toutes les tables 

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

Les requêtes doivent ressembler à:

SHOW TABLES

SHOW TABLES FROM mydatabase

SHOW TABLES FROM mydatabase LIKE "tab%"

Les éléments de la documentation MySQL entre crochets [] sont facultatifs. 

1
Joshua Martell
SHOW TABLES

montrera toutes les tables dans votre base de données. Si vous souhaitez filtrer les noms que vous utilisez LIKE et le caractère générique %

SHOW TABLES FROM my_database LIKE '%user%'

vous donnera toutes les tables dont le nom inclut 'utilisateur', par exemple

users
user_pictures
mac_users

etc.

1
marvin

Les crochets qui sont couramment utilisés dans la documentation de mysql pour des exemples doivent être omis dans une requête "réelle".

De plus, il ne semble pas que le résultat de la requête mysql soit répercuté ailleurs. mysql_query retourne une ressource mysql en cas de succès. La page de manuel php comprend également des instructions sur la façon de charger la ressource de résultat mysql dans un tableau pour l'écho et d'autres manipulations.

1
user622367

Bien sûr, vous pouvez interroger votre base de données avec SHOW TABLES, puis parcourir tous les enregistrements, mais ce sont des lignes de code et des travaux supplémentaires.

PHP a une fonction intégrée pour lister toutes les tables dans un tableau pour vous:

mysql_list_tables - vous pouvez trouver plus d'informations à ce sujet à La page API PHP

0
braumer

vous devez affecter mysql_query à une variable (par exemple, $ result), puis afficher cette variable comme un résultat normal de la base de données.

0
Al_