Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    6

    Cancellare Una Colonna Da Una Tabella Del Database

    Ciao,sono ore che non so come risolvere il problema.
    In pratica ho scritto un primo file di creazione di una semplice tabella:

    <?php
    //input data
    $mysql_host='localhost';
    $mysql_user='sitomonica';
    $mysql_password='';
    $my_database='my_sitomonica';
    $my_table='tabellasito';

    // Connecting, selecting database
    $link = mysql_connect($mysql_host, $mysql_user, $mysql_password)
    or die('Could not connect: ' . mysql_error());
    echo "Connected successfully\n";
    mysql_select_db($my_database) or die('Could not select database');

    // Performing SQL query
    $query = "CREATE TABLE IF NOT EXISTS $my_table (
    id INTEGER(5) UNSIGNED not null AUTO_INCREMENT UNIQUE KEY,
    nome VARCHAR(20),
    cognome VARCHAR(20),
    email VARCHAR(40)
    )";
    mysql_query($query) or die('Query failed: ' . mysql_error());

    echo "La tabella è stata creata con successo";

    //closing connection
    mysql_close($link);
    ?>



    e adesso ne ho scritto un altro che vorrei eseguisse l'eliminazione di una colonna della tabella (ad esempio la colonna dei nomi). Ma mi dice che non può cancellare 'nome' e di controllare se la colonna esiste!! Ma le colonne non so quelle 3 indicate nella creazione della tabella , e cioè 'nome','cognome' e 'email'???? Io pensavo fossero quelle!! E se non lo so come faccio a inserire qui la loro definizione????? Grazie!!!!!

  2. #2
    potresti almeno mettere il codice usato per cancellare la colonna....

    comunque il codice per cancellare una colonna sarebbe:

    ALTER TABLE tabellasito DROP nome

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    6
    So che il comando è quello ma c'è qualcosa che non va!
    il file è:

    <?php
    //input data
    $mysql_host='localhost';
    $mysql_user='sitomonica';
    $mysql_password='';
    $my_database='my_sitomonica';
    $my_table='tabellasito';

    //connecting,selecting database
    $link=mysql_connect ($mysql_host, $mysql_user, $mysql_password)
    or die ('Could not connect: ' . mysql_error());
    echo "Connected successfully\n";
    mysql_select_db($my_database) or die('Could not select database');

    //performing SQL query
    $query="ALTER TABLE tabellasito DROP COLUMN nome";
    mysql_query($query) or die('Query failed: ' . mysql_error());

    //printing results in HTML
    echo "La colonna è stata eliminata";

    //closing connection
    mysql_close($link);

    ?>




    l'errore che mi dà è: 'Connected successfully Query failed: Can't DROP 'nome'; check that column/key exists'

    Per me è difficile,ogni volta ci metto una vita ad individuare un errore. Non so se è giusto ma capisco che è come se la colonna non risulta dalla creazione della tabella. Che devo fare????!!!!help

  4. #4
    Perche', forse, molto semplicemente l'hai gia' cancellata ed il tentativo seguente non la trova piu'.

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    6
    Ne sei sicuro??!! Non dovrebbe dirmi "la colonna è stata cancellata",cioè la frase di output che ho messo io???!! Anch'io spero sia giusto ma ho i miei dubbi perchè la frase che dà è chiara...che barba sti linguaggi,ti fanno impazzire

  6. #6
    Originariamente inviato da maya85
    Ne sei sicuro??!! Non dovrebbe dirmi "la colonna è stata cancellata",cioè la frase di output che ho messo io???!! Anch'io spero sia giusto ma ho i miei dubbi perchè la frase che dà è chiara...che barba sti linguaggi,ti fanno impazzire
    Codice PHP:
    //performing SQL query
    $query="ALTER TABLE tabellasito DROP COLUMN nome";
    mysql_query($query) or die('Query failed: ' mysql_error());

    //printing results in HTML
    echo "La colonna è stata eliminata"
    esce con il die della query. Se passasse, la query ti stamperebbe l'echo a prescindere dal risultato, quindi il DIE serve come controllo dell'esecuzione della query.

    Per provare se funziona dovresti: cancellare la tabella (DROP TABLE) , ripetere il create table e poi eseguire l'alter table. E poi controllare la composizione della tabella.

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    6
    E quindi in definitiva lasciarlo così non sarebbe sbagliato???!!! perchè in poche parole devo portare questi due script ad un esame (che è anche su altro) cioè non ho imparato il linguaggio bene ma è bastato fare due o più file scritti in mysql....però senza errori ovviamente! se lo porto così da come dici non è da considerare errato. Grazie ancora

  8. #8
    Originariamente inviato da maya85
    E quindi in definitiva lasciarlo così non sarebbe sbagliato???!!! perchè in poche parole devo portare questi due script ad un esame (che è anche su altro) cioè non ho imparato il linguaggio bene ma è bastato fare due o più file scritti in mysql....però senza errori ovviamente! se lo porto così da come dici non è da considerare errato. Grazie ancora
    Personalmente, rimanendo con la tua acqua che gia cuoce in pentola, lo farei cosi':

    Codice PHP:
    //performing SQL query
    $query="ALTER TABLE tabellasito DROP COLUMN nome";
    $res mysql_query($query);

    //printing results in HTML
    if($res == FALSE) {
         die(
    'Query failed: ' mysql_error());
         } else { 
                    echo 
    "La colonna è stata eliminata";
                  } 
    Funziona anche il tuo modo con cui hai scritto anche le altre query. Siamo d'accordo che se riceve false il die ferma lo script, ma personalmente preferirei non mettere senza condizione la stampa del successo dell'operazione. Con la if proponi due alternative mutualmente esclusive.

    Se false allora DIE se TRUE allora e' stato eseguito con successo. Da piu' la sensazione di avere sotto controllo lo script. Siamo a livello scolastico, non dimentichiamolo. Concordiamo pure, ovviamente, sul fatto che puo' anche essere scritto in altro modo tipo if!$res) ed altri ancora.

    e mentre ci sei rivedi questa riga:

    id INTEGER(5) UNSIGNED not null AUTO_INCREMENT UNIQUE KEY,

    un auto increment deve essere chiave primaria.

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

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    6
    Grazie della risposta,ho cambiato come consigliavi (data la mia palese ignoranza in materia ).....però mi dà ancora questa scritta:

    Connected successfully Query failed: Can't DROP 'nome'; check that column/key exists

    Uffa! oppure è normale?! boh

  10. #10
    Originariamente inviato da maya85
    Grazie della risposta,ho cambiato come consigliavi (data la mia palese ignoranza in materia ).....però mi dà ancora questa scritta:

    Connected successfully Query failed: Can't DROP 'nome'; check that column/key exists

    Uffa! oppure è normale?! boh
    se ti dice di controllare se il campo esiste tu controlla.

    Tu stai cercando di eliminare una colonna che si chiama `nome` che non esiste. Forse esisteva, ma non esiste piu' al momento della query ALTER TABLE

    Ti ho gia' suggerito cosa dovresti fare. cancella la tabella , ricrea la tabella, altera la tabella.

    Ovviamente se poi riprovi la query questa non andra' piu perche' avra' gia cancellato il campo "nome". Signur... se la ricrei senza cancellarla prima il CREATE TABLE IF NOT EXISTS ti inchiappetta la query e la tabella rimane castrata della colonna "nome" e senza segnalare errore perche' non e' un errore se non la puo' creare, e' un tuo specifico ordine "IF NOT EXISTS".

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

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 © 2024 vBulletin Solutions, Inc. All rights reserved.