[PHP] Filtrare nomi tabelle DB

solari77

Utente Attivo
6 Ott 2016
119
1
18
Ciao a tutti,avrei bisogno del vostro aiuto .
Su una pagina PHP tramite il comando
SHOW TABLE STATUS FROM nome_database
Ottengo tutti i nomi delle tabelle del mio database.
Io dovrei filtrare solo alcuni di questi , è per essere più preciso,solo i nomi delle tabelle che hanno un determinato campo.

Es .
Tabella1->id,nome,cognome
Tabella2->campo1,campo2
Tabella3->campo3,campo4
Tabella4->id,ecc

Io dovrei ottenere solo i nomi delle tabelle che contengono il campo id,quindi dovrei ottenere Tabella1 e Tabella4

È possibile farlo?
Grazie
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
30
Ciao.

Questo dovrebbe fare al caso tuo.

index.php
PHP:
<?php

function cerca_campo_db(PDO $conn, $db, $colonna) {
    $query = "SELECT *
        FROM information_schema.COLUMNS
        WHERE TABLE_SCHEMA = ?
        AND COLUMN_NAME = ?";

    $stm = $conn->prepare($query);
    $stm->execute(array($db,$colonna));

    $tabelle = array();
    while ($row = $stm->fetch(PDO::FETCH_ASSOC)) {
        $tabelle[] = $row['TABLE_NAME'];
    }

    echo count($tabelle)." tabelle del db ".$db." contengono il campo ".$colonna.":<br><br>";
    foreach ($tabelle as $key => $value) {
        echo ($key+1).". ".$value."<br>";
    }
}

include_once("db.php");

$db = "shop"; // nome del db ---> MODIFICARE
$colonna = "meta_key"; // colonna ricercata ---> MODIFICARE

cerca_campo_db($conn,$db,$colonna);

 ?>


È necessario anche un file di accesso al db.

db.php
PHP:
<?php

$hostname='localhost';
$username='root';
$password='';
$db="test";

try {
    $conn = new PDO("mysql:host=$hostname;dbname=".$db.";charset=utf8",$username,$password);

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo $e->getMessage();
}

?>
Qui ovviamente dovrai modificare i parametri di connessione al db, nel caso siano diversi.
 
  • Like
Reactions: solari77

solari77

Utente Attivo
6 Ott 2016
119
1
18
Ciao,ho provato ma non va.
Sul file index.php ho modificato il nome del db ed il nome della colonna.
Sul file db.php ho modificato i parametri di connessione però ottengo sempre il messaggio
0 tabelle del db mio_db contengono il campo mia_colonna
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
non conosco mySql, ma "guardando in giro" ho trovato questa select, provala, semplifica molto
PHP:
SELECT DISTINCT TABLE_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME IN ('columnA','ColumnB')
        AND TABLE_SCHEMA='YourDatabase'

volendo aggiungere,

ORDER BY TABLE_NAME
 
  • Like
Reactions: solari77

solari77

Utente Attivo
6 Ott 2016
119
1
18
Ciao @marino51 ,questa select funziona. O meglio da PhpMyAdmin ottengo la tabella con i nomi esattamente come voglio io.
Ora però ho un'altro piccolo problema.
Io prima avevo
Codice:
$nomtab=" come mi hai indicato tu......";
 $table = mysqli_query($conn,$nomtab);
    while ($rs = mysqli_fetch_assoc($table))
    {.......
 echo $rs['TABLE_NAME'];
.........}

Però adesso la fetch_row non mi da nulla. Dove sbaglio ?
 
Ultima modifica:

solari77

Utente Attivo
6 Ott 2016
119
1
18
Ho notato una cosa strana, in locale funziona tutto regolarmente, in remoto invece che non stampa i nomi delle tabelle
 

solari77

Utente Attivo
6 Ott 2016
119
1
18
Scusate,ho commesso un gravissimo errore.Sulla query non avevo cambiato il nome del database.o_Oo_O
Funziona tutto perfettamente
Grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
N [PHP] filtrare input form di tipo array PHP 0
giancadeejay php WHERE per filtrare PHP 4
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10

Discussioni simili