Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442

    Inserimento dati da form - prepared statement

    In pratica io ho una pagina di registrazione utente, dove nella prima bisogna inserire username e password. Questi valori vengono passati alla pagina successiva in cui poi si inseriscono gli altri dati del profilo, verificando al contempo lo username non esista già nel database. Finito l'inserimento di questi dati nel form, questi dati vengono passati ad un'altra pagina (di cui sotto ce ne è una parte) in cui vengono inseriti effettivamente nel database. Come posso migliorare questa parte?
    Ho riscontrato alcune problematiche:
    - siccome all'inizio avevo un problema che non prendeva la matricola (che poi ho risolto), nel database l'inserimento andava comunque a buon fine, cosa che però non doveva succedere, dato che il campo Matricola è una primary key (insieme ad username, che fa riferimento alla tabella UTENTE). Non doveva sollevarmi un errore o qualcosa del genere?
    - l'altro dilemma che ho è questo: l'inserimento avviene in due tabelle diverse (UTENTE e PROFILOUTENTE) che sono però strettamente collegate in quanto il profilo appartiene ad un utente, tuttavia non so se c'è modo di fare uno statement unico che comprende l'inserimento in due tabelle. Questo per evitare che se per caso la procedura si interrompe mi ritrovo magari con un utente senza profilo o cose del genere.
    Grazie e scusate la lunghezza!!

    Codice PHP:
                $stm $dbConn->prepare("INSERT INTO UTENTE (Username, Password) VALUES (?, ?)");
                
    $stm->bindParam(1$username);
                
    $stm->bindParam(2$password);
                
    $stm->execute();
                
    $stm2 $dbConn->prepare("INSERT INTO PROFILOUTENTE (Matricola, Utente, Nome, Cognome, AnnoN, LuogoN, Telefono, Foto, Corso) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
                
    $stm2->bindParam(1$matricola);
                
    $stm2->bindParam(2$username);
                
    $stm2->bindParam(3$nome);
                
    $stm2->bindParam(4$cognome);
                
    $stm2->bindParam(5$annoN);
                
    $stm2->bindParam(6$luogoN);
                
    $stm2->bindParam(7$telefono);
                
    $stm2->bindParam(8$foto);
                
    $stm2->bindParam(9$corso);
                
    $stm2->execute(); 

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    1) la tua chiave è composta da 2 campi, matricola e username, quindi
    '', 'pippo',...
    '', 'pluto',...
    sono tutti inserimenti consentiti, la stringa vuota non è NULL, quindi è accettata come valida da inserire in un campo definito varchar, come penso sia definito il tuo campo matricola, quindi devi fare un controllo prima dell'inserimento per vedere se un campo obbligatorio è stato valorizzato oppure se è vuoto.

    2) si fa con le transazioni.
    Documentazione php.net

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Per l'1) il controllo c'era già a livello di applicazione, infatti il campo matricola non è mai stato vuoto. Non so per quale motivo ci finisse vuoto poi nella pagina successiva, forse avevo sbagliato qualche nome senza accorgermene. Comunque mi confermi che una stringa vuota non è null e viene quindi accettata dal db.


    2) ci guardo grazie
    Ultima modifica di Jamie04; 24-09-2017 a 14:31

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Sì, la stringa vuota viene comunque inserita.

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.