Visualizzazione risultati 1 fino 4 di 4

Discussione: Come modicare tupla del database

  1. #1
    DavideProgetti non è connesso Utente AlterBlog
    Data registrazione
    25-08-2020
    Messaggi
    2

    Predefinito Come modicare tupla del database

    Ciao a tutti, ho un problema che non so come risolvere.
    Sto scrivendo tramite pagine php dei dati su MySql, la scrittura e la lettura funzionano perfettamente, ma non riesco a modificare o cancellare un singolo campo nella tabella.
    Grazie

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,844

    Predefinito

    Mostra le parti rilevanti del codice che hai provato a scrivere per cancellazione e modifica, così vediamo cosa c'è che non va.

    I suggerimenti che do più spesso:


  3. #3
    DavideProgetti non è connesso Utente AlterBlog
    Data registrazione
    25-08-2020
    Messaggi
    2

    Predefinito

    Questo è il codice per la cancellazione:
    Codice PHP:
    <?php
        $user 
    $_REQUEST["username"];
        
    $psw $_REQUEST["password"];
        
    $mail $_REQUEST["mail"];

        
    $conn mysql_connect("ftp.davideprogetti.altervista.org""*****""******");

        
    mysql_select_db("my_davideprogetti");

        
    $comando "select email from _utenti where nome='$user'";
        
    $risultato mysql_query($comando);
        
    $riga mysql_fetch_assoc($risultato);

        if(
    $riga){
            if (
    $riga["email"] == $mail){
                
                
    $comando2 "DELETE FROM `_utenti` WHERE `nome`='$user'";
                
    $risultato2 mysql_query($comando);
                
    $riga2 mysql_fetch_assoc($risultato);
                
                
    $comando3 "INSERT INTO _utenti (`nome`, `pass`, `email`) VALUES ('$user', '$psw', '$mail')";
                
                
    mysql_close($conn);
            }
        }
    ?>
    Mentre per la modifica:
    Codice PHP:
    <?php
        $user 
    $_REQUEST["username"];
        
    $psw $_REQUEST["password"];
        
    $mail $_REQUEST["mail"];

        
    $conn mysql_connect("ftp.davideprogetti.altervista.org""*****""******");

        
    mysql_select_db("my_davideprogetti");

        
    $comando "select email from _utenti where nome='$user'";
        
    $risultato mysql_query($comando);
        
    $riga mysql_fetch_assoc($risultato);

        if(
    $riga){
            if (
    $riga["email"] == $mail){
                
                
    $comando2 "UPDATE `_utenti` SET `pass`='$pass' WHERE `nome`='$user'";
                
    $risultato2 mysql_query($comando);
                
    $riga2 mysql_fetch_assoc($risultato);
                
                
    mysql_close($conn);
            }
        }
    ?>
    Ultima modifica di alemoppo : 12-01-2021 alle ore 20.58.57 Motivo: +tag [php]

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,844

    Predefinito

    Le funzioni mysql_* non fanno più parte del linguaggio da diversi anni, e sono deprecate da 6-7 anni. Se sei agli inizi con PHP e SQL ti conviene cominciare seguendo guide più aggiornate, cercane che usino mysqli o PDO.

    Riguardo alla cancellazione: dal codice sembra tu intenda cancellare le righe in cui nome = $user, ma solo a condizione che email = $mail. Puoi unire queste due clausole in un'unica query:
    Codice PHP:
    $comando2 "DELETE FROM `_utenti` WHERE `nome`='$user' AND `email`='$mail'"
    Dopo l'esecuzione della query, di cui dovresti controllare il valore di ritorno, stai usando un fetch_assoc: questo è sbaglio, le operazioni di DELETE non restituiscono risultati, quindi non c'è nulla da restituire tramite fetch.
    Non è chiaro quale sia lo scopo di $comando3: intendi reinserire un utente dopo averlo cancellato?

    Le stesse osservazioni valgono per la modifica: puoi usare un'unica query per modifica solo l'utente con nome e email indicati:
    Codice PHP:
    $comando2 "UPDATE `_utenti` SET `pass`='$pass' WHERE `nome`='$user' AND `email`='$mail'"
    Anche in questo caso usi un fetch_assoc che non serve a niente, le UPDATE non restituiscono risultati.

    Una cosa molto importante è controllare sempre i valori restituiti dalle query, possono indicarti se ci sono errori. Se hai bisogno di una mano su questo, scegli uno tra mysqli e PDO e possiamo vedere insieme il codice relativo.

    Il codice al momento è vulnerabile a SQL Injection, dovresti usare prepared statement, ma per il momento va bene così. Una cosa alla volta.

    I suggerimenti che do più spesso:


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •