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,954

    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,954

    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
  •