Selectionner le contenu de toutes les tables d'une bdd qui comment par le meme prefix

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Selectionner le contenu de toutes les tables d'une bdd qui comment par le meme prefix

Re: Selectionner le contenu de toutes les tables d'une bdd qui comment par le meme prefix

par stevefigueras » 16 juil. 2021, 20:13

Merci je fais mes recherches et je reviens par ici plus tard :)

Re: Selectionner le contenu de toutes les tables d'une bdd qui comment par le meme prefix

par Shadowwera » 15 juil. 2021, 08:49

Salut !

SHOW TABLES va seulement te retourner le nom des tables qui commence par ton préfixe, si tu veux récupérer les données de ces tables tu va devoir faire un foreach qui fait une requete SQL avec chaque nom de table pour récupéré les données

De plus tu tente de récupéré les données via mysql_fetch_array, qui dans un premier temps est obsolète, et dans un deuxième temps ne sert a rien car tu a déja récupéré le nom de tes tables avec le fetchAll dans ta variable $table

Ce que tu doit faire maintenant c'est boucler $table qui va faire une requête pour chaque occurrence

Re: Selectionner le contenu de toutes les tables d'une bdd qui comment par le meme prefix

par stevefigueras » 13 juil. 2021, 23:15

Je continue mes recherche

Code : Tout sélectionner

$query=$link->query("SELECT 'SELECT iso4580.id_acte AS idacte, iso4580.prescripteur AS prescri FROM '+TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%iso%'"); while($rows = $query->fetch_assoc()) { $cont_idacte = $rows ['idacte']; $cont_prescri = $rows ['prescri']; echo "<p>id : $cont_idacte <br/></p>"; echo "<p>prescripteur : $cont_prescri <br/></p>"; }
Là je vois bien que le code essaye de m'afficher 3 occurences (j'ai trois tables qui correspondent à ce critère mais ca n'affiche rien.


Le code ci dessous fonctionne bien si j'interroge les bases une par une.

Code : Tout sélectionner

$query=$link->query("SELECT iso4580.id_acte AS idacte, iso4580.prescripteur AS prescri FROM iso4580,iso4578"); echo $query->num_rows;*/ while($rows = $query->fetch_assoc()) { $cont_idacte = $rows ['idacte']; $cont_prescri = $rows ['prescri']; echo "<p>id : $cont_idacte <br/></p>"; echo "<p>prescripteur : $cont_prescri <br/></p>"; }
Comment faire que ce code fonctionne non pas avec les nom des tables en dur mais sur le critère que la table possède le préfix "iso" ?

Merci de votre aide

Re: Selectionner le contenu de toutes les tables d'une bdd qui comment par le meme prefix

par stevefigueras » 13 juil. 2021, 22:03

Merci de ton aide
J'arrive à un résultat mais impossible d'afficher le contenu de ces tables. *

$sth = $pdo->query("SHOW TABLES FROM nomtable LIKE 'iso%'");
$table = $sth->fetchAll(PDO::FETCH_ASSOC);
print_r($table);



echo "<table>";

while($row = mysql_fetch_array($table)){
echo "<tr><td>" . $row['id_truc'] . "</td><td>" . $row['id_machin'] . "</td></tr>";
}

echo "</table>";

Merci de ton aide en tout cas

Re: Selectionner le contenu de toutes les tables d'une bdd qui comment par le meme prefix

par Shadowwera » 13 juil. 2021, 15:59

Salut,

Tu peux utiliser la requete SQL SHOW TABLES pour récupéré le nom des tables selon un pattern.
$sth = $req->query("SHOW TABLES LIKE 'iso%'");
$table = $sth->fetchAll(PDO::FETCH_ASSOC);
Tu peux aussi spécifier une BDD particulière comme ceci :
$sth = $req->query("SHOW TABLES FROM db_name LIKE 'iso%'");
$table = $sth->fetchAll(PDO::FETCH_ASSOC);
Pratique si tu a plusieurs BDD dans un même environnement

Selectionner le contenu de toutes les tables d'une bdd qui comment par le meme prefix

par stevefigueras » 13 juil. 2021, 00:06

Bonjour à tous j'ai des données dans une bdd mysql que j'extrai sans souci.
Par contre j'ai besoin cette fois ci d'extraire les informations des bases de donnée mais en fonction du fait qu'elle ont le préfix "iso" devant leur nom.

$sql = "SELECT * FROM SELECT table_name
FROM information_schema.tables
WHERE table_type = 'base table' AND table_name like '%iso%'";

Ce code ne fonctionne pas et j'aimerai bien votre aide :)