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.
    • 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