- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aiuto, come estrarre i dati da più tabelle
-
Ciao Oslino, grazie per la risposta.
Avevo pensato a questa soluzione, ma se in futuro dovessi aggiungere altre tabelle al database? Non posso stare sempre a modificare il codice.
Quello che vorrei riuscire a scrivere è una cosa del genere:
[PHP]SELECT * FROM .... [/PHP]
dopo FROM vorrei non scrivere il nome delle tabelle ma dirgli di selezionare tutte le tabelle presenti nel database.
Spero di essere riusci a spiegarmi.
Grazie, ciao.
-
Sinceramente non credo che esista un comando SQL che faccia quel che vuoi tu e se c'è non ne ho mai sentito parlare.
Avresto bisogno di qualcosa del tipo
[PHP]SELECT * FROM * [/PHP]
che comunque rimane senza senso dato che ti darebbe come risultato il prodotto di ogni campo delle tabelle moltiplicato per ogni campo delle altre tabelle, in pratica una enorme ripetizione degli stessi valori.
Non so se funziona, non l'ho mai provato e sarei curioso di sapere se lo prende!
Prova e facci sapere.
-
Ciao Oslino, ho provato la tua soluzione, ma purtroppo non funziona.
Questo è quello che ho scritto:
[PHP]$query = "SELECT * FROM *";$select = @mysql_query($query) or die("Query fallita !!!");[/PHP]
Altre idee?
Ciao.
-
Ciclo? Se gli dai numeri incrementali come suffisso al nome delle tabelle puoi tentare così:
[PHP]$array = array();
$base = "nometabella_";
$i = 0; //Se la prima tabella è nometabella_0 e le successive 1, 2, 3...
while(mysql_query("DESCRIBE " . $base.$i)) { //Finché esiste la tabella
$result = mysql_query("SELECT * FROM " . $base.$i); //Query
while($user = mysql_fetch_array($result)) {
array_push($array, $user); //Metto tutti i risultati nell'array, al termine qui avrò i risultati di tutte le tabelle
}
$i++;
}[/PHP]Non so che ci devi fare e se ha senso, però in teoria qualcosa del genere dovrebbe funzionare.
-
Ciao samurai.sette, a mio avviso una delle possibili cause del problema sta nel fatto che siano utilizzate funzioni MySQL deprecate, mi riferisco a questa:
@samurai.sette said:
mysql_query($query)
che dovrebbe essere convertita nella nuova mysqli_query(). Per approfondimenti rimando alla guida ufficiale.
Mi preme far notare che con la nuova versione di PHP7 le vecchie funzioni MySQL, come quella citata, non sono più disponibili.Buon lavoro.
-
Ciao ragazzi, ho provato le vostre soluzioni ma purtroppo non va...
Non so proprio come fare
-
Ciao samurai.sette
potresti costruire una pagina php in cui selezioni le tabelle da mettere in query, o il processo deve essere automatico? Detto ciò io, se le tabelle non devono essere messe in JOIN per qualche motivo, farei query separate
-
Ciao PietroR. Grazie per la risposta.
Il processo deve essere automatico, nel senso che quando aggiungo una tabella al database deve automaticamente estrarre tutti i suoi dati.
Preciso anche che la struttura delle tabelle varia da tabella a tabella.Ciao.
-
Secondo me, se anche la struttura della tabella cambia non credo che ci sia modo di intervenire se non da codice.
-
ciao, dovresti fare una query che ti dia come risultato i nomi delle tabelle del db e salvare il risultato in un array, dopodichè lo scorri con un ciclo ed estrai i record per ogni tabella:
$sql = "SHOW TABLES FROM my_database";
$result = mysql_query($sql);while($row = mysql_fetch_row($result)) {
$tabella = $row[0];
$risultato = mysql_query("SELECT * FROM $tabella") or die(mysql_error());}