Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Controllo dati su MySQL
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • S
      superjolly002 User Newbie • ultima modifica di

      Controllo dati su MySQL

      Buongiorno a tutti, sono nuovo e appena ho visto questa sezione di php e MySQL ho preso l'occasione per domandare come posso fare un controllo dei dati in MySQL con php.
      Ad esempio: Se l'email e/o lo username sono già esistente sul database allora di mandarti a un'altra pagina. Io ho provato così:

      [PHP]
      <include (dbconnect.php)>
      $email = addslashes($_POST['email'])
      $user = addslashes($_POST['user'])
      check_email = db -> prepare("SELECT user FROM users WHERE ('user = :user OR email' = :email")
      if (check_email){
      header("location: err.php")
      }
      [/PHP]

      L'unico problema è che anche quando i dati inseriti sono diversi da quelli presenti nel database mi rimanda sempre alla pagina err.php; Cosa ho sbagliato e come posso correggere?
      Grazie mille a tutti dell'aiuto 😉

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • B
        bacca001 User Attivo • ultima modifica di

        Così stai facendo solo il PREPARE non stai eseguendo la query, quindi per forza di cose ritorna TRUE e ti rimanda al file.

        Usa l'execute e poi conta le righe ad esempio, se maggiori di 0 allora mandi alla pagina di errore, se 0 l'utente può registrarsi perchè non esiste nessuno con i suoi dati..

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • S
          superjolly002 User Newbie • ultima modifica di

          @Bacca001 said:

          Così stai facendo solo il PREPARE non stai eseguendo la query, quindi per forza di cose ritorna TRUE e ti rimanda al file.

          Usa l'execute e poi conta le righe ad esempio, se maggiori di 0 allora mandi alla pagina di errore, se 0 l'utente può registrarsi perchè non esiste nessuno con i suoi dati..

          Grazie mille per la risposta, ma non so come fare il conteggio delle righe.

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • B
            bacca001 User Attivo • ultima modifica di

            @superjolly002 said:

            Grazie mille per la risposta, ma non so come fare il conteggio delle righe.

            Ah puoi benissimo chiamare rowCount() dopo l'execute 🙂

            Ad esempio

            [PHP]
            $db->prepare(..);
            $db->execute();

            if ($db->rowCount() > 0){
            // gia registrato
            }else{
            // non registrato
            }
            [/PHP]

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • S
              superjolly002 User Newbie • ultima modifica di

              Ah ok, grazie mille dell'aiuto, ora provo e faccio sapere 😉

              Up: Allora io ho riscritto il file così:
              [PHP]
              $user = addsleshes($_POST['User']);
              $email = addsleshes($_POST['Email']);
              $sth = db -> prepare("SELECT 'user' FROM 'user' WHERE ('user' = :user OR 'email' = :email)'');
              $sth -> bindParam (':user', $user);
              $sth -> bindParam (':email', $email);
              $sth -> execute ()
              if ($sth -> rowCount ()){
              header ("location: err.php");
              }
              [/PHP]

              Unico problema ora è che in qualsiasi caso mi registra nel database, pure se qual dato esiste. Cosa ho sbagliato?

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • B
                bacca001 User Attivo • ultima modifica di

                Riesci ad incollare il php completo?

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • S
                  superjolly002 User Newbie • ultima modifica di

                  @Bacca001 said:

                  Riesci ad incollare il php completo?
                  Quale php?

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • B
                    bacca001 User Attivo • ultima modifica di

                    Il codice dello script

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • S
                      superjolly002 User Newbie • ultima modifica di

                      [PHP]
                      <include (dbconnect.php)>
                      $user = addsleshes($_POST['User']);
                      $email = addsleshes($_POST['Email']);
                      $sth = db -> prepare("SELECT 'user' FROM 'user' WHERE ('user' = :user OR 'email' = :email)'');
                      $sth -> bindParam (':user', $user);
                      $sth -> bindParam (':email', $email);
                      $sth -> execute ()
                      if ($sth -> rowCount () > 0){
                      header ("location: err.php");
                      }
                      [/PHP]

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • B
                        bacca001 User Attivo • ultima modifica di

                        Prova così allora, effettivamente non avevo pensato ad una casistica:
                        dopo la execute()
                        [PHP]
                        $row = $sth->fetch(PDO::FETCH_ASSOC);
                        if ($row){
                        //errore
                        }else{
                        //continuo
                        }
                        [/PHP]

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • S
                          superjolly002 User Newbie • ultima modifica di

                          Continua a non andare... E ho scritto tutto senza errori

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • B
                            bacca001 User Attivo • ultima modifica di

                            Oddio mi sembra strano.
                            Ad ogni modo non stavo testando.

                            Ti incollo il mio codice funzionante (appena testato, mi ero "incagnato" perchè teoricamente doveva funzionare):
                            [PHP]
                            <?php
                            try {

                            $name = 'test';
                            $email = '[email protected]';
                            
                            $db_connector = new PDO('mysql:host=localhost;dbname=DBTEST', 'root', 'root');
                            
                            $query = $db_connector->prepare('SELECT id FROM users WHERE (name = :name OR email = :email)');
                            $query->bindParam(':name', $name, PDO::PARAM_STR);
                            $query->bindValue(':email', $email);
                            $query->execute();
                            
                            if($query->rowCount()){
                                echo "L'utente esiste";
                            }else{
                                echo "L'utente non esiste";
                            }
                            

                            } catch (PDOException $e) {
                            print "Errore: " . $e->getMessage() . "<br>";
                            die();
                            }
                            ?>
                            [/PHP]

                            Fammi sapere, se ancora non va, c'è qualcosa che non funziona.

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • S
                              superjolly002 User Newbie • ultima modifica di

                              Ora non posso provarlo appena lo provo scrivo e faccio sapere 😉

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • S
                                superjolly002 User Newbie • ultima modifica di

                                Ok, scusa il ritardo della risposta, ma sono stato occupato perchè dovevo andare in vacanza. Ho riscritto il codice come l'hai fatto tu, ma nulla non mi va... Altri consigli per favore?

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                • B
                                  bacca001 User Attivo • ultima modifica di

                                  @superjolly002 said:

                                  Ok, scusa il ritardo della risposta, ma sono stato occupato perchè dovevo andare in vacanza. Ho riscritto il codice come l'hai fatto tu, ma nulla non mi va... Altri consigli per favore?

                                  Hai corretto le vari variabili e la query?

                                  0 Miglior Risposta Ringrazia Cita Rispondi

                                    1 Risposta Ultima Risposta
                                  • S
                                    superjolly002 User Newbie • ultima modifica di

                                    Certo

                                    0 Miglior Risposta Ringrazia Cita Rispondi

                                      1 Risposta Ultima Risposta
                                    • B
                                      bacca001 User Attivo • ultima modifica di

                                      Prova a questo punto a passare le Variabili direttamente come ho fatto io, senza passare per $_POST, e vedi se è quello, magari il form non manda bene i dati.

                                      Se no, direi che non è il PHP ma è un problema di db, perchè a me funziona benissimo.

                                      0 Miglior Risposta Ringrazia Cita Rispondi

                                        1 Risposta Ultima Risposta
                                      • S
                                        superjolly002 User Newbie • ultima modifica di

                                        Bacca001 mi sono accorto che avevo sbagliato a scrivere una cosa, quindi correggendo mi funziona. Grazie mille 😉

                                        0 Miglior Risposta Ringrazia Cita Rispondi

                                          1 Risposta Ultima Risposta
                                        • B
                                          bacca001 User Attivo • ultima modifica di

                                          @superjolly002 said:

                                          Bacca001 mi sono accorto che avevo sbagliato a scrivere una cosa, quindi correggendo mi funziona. Grazie mille

                                          Immaginavo, la magia non esiste! ahah
                                          Figurati 🙂

                                          0 Miglior Risposta Ringrazia Cita Rispondi

                                            1 Risposta Ultima Risposta
                                          Caricamento altri post
                                          Rispondi
                                          • Topic risposta
                                          Effettua l'accesso per rispondere
                                          • Da Vecchi a Nuovi
                                          • Da Nuovi a Vecchi
                                          • Più Voti