Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    mysql_fetch_field: costruzione query

    Salve ragazzi.
    Devo costruire una query per duplicare una tabella del db.

    Per farlo utilizzo la funzione mysql_fetch_field tramite la quale ottengo tutte le caratteristiche della tabella da duplicare. Il problema è che mi vengono restituiti dei numeri per alcuni attributi che possono essere per esempio primary_key, numeric, ecc.

    Ecco cosa mi viene restituito:

    Information for column 0:
    blob: 0
    max_length: 1
    multiple_key: 0
    name: id
    not_null: 1
    numeric: 1
    primary_key: 1
    table: catalog_details
    type: int
    unique_key: 0
    unsigned: 0
    zerofill: 0


    Information for column 1:
    blob: 0
    max_length: 2
    multiple_key: 0
    name: node
    not_null: 1
    numeric: 1
    primary_key: 0
    table: catalog_details
    type: int
    unique_key: 0
    unsigned: 1
    zerofill: 0


    Information for column 2:
    blob: 0
    max_length: 12
    multiple_key: 0
    name: name
    not_null: 1
    numeric: 0
    primary_key: 0
    table: catalog_details
    type: string
    unique_key: 0
    unsigned: 0
    zerofill: 0


    Information for column 3:
    blob: 0
    max_length: 0
    multiple_key: 0
    name: description
    not_null: 1
    numeric: 0
    primary_key: 0
    table: catalog_details
    type: string
    unique_key: 0
    unsigned: 0
    zerofill: 0



    Ora la domanda è: per ogni numero qual è la parola corripondente? cioè, volendo ricostruire la tabella riportata con tutti i campi elencati che query eseguireste?
    Se non sono stato chiaro ditemelo che mi spiego meglio. Ciao!

  2. #2
    se ho capito bene, lo "0" significa che l'attributo corrispondente non è settato. "1" per il contrario. nel caso di max_length, il numero indica la lunghezza della stringa.

    per esempio, "column 0" dovrà avere queste caratteristiche:
    massima lunghezza 1
    non dovrà essere nullo
    dovrà essere numerico
    chiave primaria

  3. #3
    da php.net:

    *

    name - column name
    *

    table - name of the table the column belongs to
    *

    max_length - maximum length of the column
    *

    not_null - 1 if the column cannot be NULL
    *

    primary_key - 1 if the column is a primary key
    *

    unique_key - 1 if the column is a unique key
    *

    multiple_key - 1 if the column is a non-unique key
    *

    numeric - 1 if the column is numeric
    *

    blob - 1 if the column is a BLOB
    *

    type - the type of the column
    *

    unsigned - 1 if the column is unsigned
    *

    zerofill - 1 if the column is zero-filled

  4. #4
    No, non hai capito. Io lo so che significano però devo costruirci una nuova query con quei dati. Quindi il codice sarà qualcosa del genere:

    Codice PHP:
    // Mettiamo che abbia
    // già eseguito tutto
    // il necessario per
    // ottenere i valori
    // nell'oggetto $cols

    $query 'CREATE TABLE ' $cols->table ' ( ';

    // A questo punto processo ogni dato
    while (processo di estrazione dati colonne)
         {
            
    $query .= $cols->name ' ' $cols->type '('
                      
    $cols->max_lenght ')';

            
    // Controllo se è NOT NULL
            
    if ($cols->not_null === 1)
              {
                 
    // E' not null
                 
    $query .= 'NOT NULL';
              }
            else
              {
                 
    $query .= 'NULL';
              }
         } 
    Tutto questo per ogni valore di questo tipo.

    Ora, per not null so come si imposta una colonna NOT NULL o una colonna NULL;

    Però parametri del tipo "unique key" o multiple key", non so gestirli. Questo era quello che volevo sapere: come si deve comportare lo script per ogni valore ritornato dall'oggetto?

  5. #5
    SHOW CREATE TABLE tabella

    rende due campi:
    table e create table

    ma se ti sembra troppo semplice volendo si potrebbe sempre fare una classe...



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    No piero. Io so come funziona mysql_fetch_field e so anche cosa restituisce. So anche come gestire tutto quello che devo gestire.
    L'unica cosa che non so è come si imposta la query utilizzando quei parametri!

    Per esempio, blob che significa? Come si crea una tabella blob?

    Forse è meglio se elenco tutto quello che so e quello che non so:

    not_null: se = 1 echo NOT NULL else NULL

    primary_key: indica che il campo è la chiava primaria:
    echo 'PRIMARY KEY(nome_campo)

    unique_key: non so a che serve ne come si costruisce una query utilizzando questo comando

    multiple key:non so a che serve ne come si costruisce una query utilizzando questo comando

    unsigned: se = 1 echo UNSIGNED (non c'è else)

    zero-fill: non so a che serve ne come si costruisce una query utilizzando questo comando

    blob: non so a che serve ne come si costruisce una query utilizzando questo comando

    numeric: non so a che serve ne come si costruisce una query utilizzando questo comando

    A me serve solo capire ognuno di questi comandi come si scrive in una query e a che serve!

  7. #7
    fai un po come vuoi...

    show create table fa esattamente quello che vorresti fare tu. Legge la struttura della tabella e ti fornisce i comandi per ricrearla.

    Se invece vuoi "acculturarti" sui vari formati di campo (e non tabella) disponibili devi consultare il manuale.

    http://dev.mysql.com/doc/mysql/en/column-types.html

    e qui trovi l'occupazione.

    http://dev.mysql.com/doc/mysql/en/st...uirements.html


    quello che hai elencato sono in linea generale formati e tipo di indici dei vari campi. Li puoi usare nel create table oppure in ALTER TABLE. Nella query sono attributi dei campi.




    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Ho capito, grazie mille.
    Cmq devo usare mysql_fetch_field perchè con i dati che ottengo devo costruire un array dal quale, poi, ricostruire la query di costruzione della nuova tabella e la query di selezione ed inserimento nella nuova tabella. Cmq grazie per le info: sempre il migliore! Grazie piero.mac! Ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.