Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2019
    Messaggi
    19

    mysqli_num_rows() crea problemi nel recupero dati dal db

    Ciao ragazzi, sto seguendo un video corso di mysql ma le cose a me non funzionano come nel corso, non so se sia il forum corretto, ho pensato di scrivere qua siccome il mio problema avviene nell'uso delle funzioni mysql, quindi in php.

    Ho creato un db, con i dati necessari per effettuare un login, tuttavia quando vado a cercare nel db un utente con username e password uguali a quelle che inserisco nel form mi compare il seguente errore:
    mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in D:\Xampp\htdocs\Lab drioli\videocorsoMySql(php).php on line 45

    Il codice è questo:
    codice:
    $conn= mysqli_connect("localhost", "root", "");
    $sql="select * from accesso where usareName='$user' and psw='$psw'<br>";
    $result=mysqli_query($conn,$sql);
    
    if(mysqli_num_rows($result)>0)
            {
                echo"Le credenziali sono corrette, procedi cliccando: ";
                echo"<a href='welcome.php'>qui</a>";
            }
            else
            {
                echo"Le credenziali non sono corrette, ritorna alla pagina di login cliccando: ";
                echo"<a href='videocorsoMySql(html).php'>qui</a>";
            }
    La riga 45 citata nell'errore sarebbe quella del if(mysqli_num_rows($result)>0).
    Grazie a tutti

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,806
    Nella connessione non selezioni il database, quindi la query fallisce, ma non te ne accorgi perché non hai messo controlli.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2019
    Messaggi
    19
    Scusa ma non ti seguo, intendi che non ho specificato il nome del database all'interno di $conn?
    Perché in un altro esercizio ho scritto le stesse cose ma raggiunge il database poiché mi stampa tutti i suoi valori.
    Avevo omesso una parte perché non credevo centrasse, questo è il codice completo:
    codice:
    $user=$_POST['user'];
    $psw=$_POST['psw'];
    $conn= mysqli_connect("localhost", "root", "",);
    
    if(!$conn) 
    {
        echo "La connessione è fallita, riprovare tra qualche minuto cliccando <a href='videocorsoMySql(php).php'>qui</a>";
    }
    else
    {
    if(!mysqli_select_db($conn,"utenti"))
        {
            echo "Impossibile aprire il database 'utenti', clicca <a href='videocorsoMySql(html).php'>qui</a>";
            
        }
        else
        {    
           $sql="select * from accesso where usareName='$user' and psw='$psw'<br>";
            
           $result=mysqli_query($conn,$sql); //è una matrice con i dati che hanno le specifiche indicate in $sql
           if(mysqli_num_rows($result)>0)
            {
                echo"Le credenziali sono corrette, procedi cliccando: ";
                echo"<a href='welcome.php'>qui</a>";
            }
            else
            {
                echo"Le credenziali non sono corrette, ritorna alla pagina di login cliccando: ";
                echo"<a href='videocorsoMySql(html).php'>qui</a>";
            }
        }
        
    }
    Ultima modifica di Ale17; 16-01-2020 a 10:29

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,806
    $conn= mysqli_connect("localhost", "root", "",);

    qui c'è una virgola di troppo e manca il nome del db al quale collegarsi, non serve farlo dopo con mysqli_select_db().

    Comunque come hai scritto adesso che problema ti da? Lo stesso?
    Ultima modifica di Alhazred; 16-01-2020 a 11:11

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2019
    Messaggi
    19
    Quindi scrivere:
    codice:
    $conn= mysqli_connect("localhost", "root", "", "utenti");
    if(!$conn)
    {
    	echo "La connessione è fallita, riprovare tra qualche minuto cliccando <a href='videocorsoMySql(php).php'>qui</a>";
    }
    è la stessa cosa di scrivere questo?
    codice:
    $conn= mysqli_connect("localhost", "root", "");
    if(!$conn) 
    {
    	echo "La connessione è fallita, riprovare tra qualche minuto cliccando <a href='videocorsoMySql(php).php'>qui</a>";
    }
    else
    {
    	if(!mysqli_select_db($conn,"utenti"))
    	{
    		echo "Impossibile aprire il database 'utenti', clicca <a href='videocorsoMySql(html).php'>qui</a>";
    		
    	}


    Comunque sì continua a darmi lo stesso problema

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,806
    Sì, i due codici sono equivalenti.

    Nella query scrivi così
    codice:
    $sql="select * from accesso where usareName='$user' and psw='$psw'<br>";
    quel <br> alla fine non dovrebbe esserci, prova a toglierlo.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2019
    Messaggi
    19
    Purtroppo rimane lo stesso errore

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,806
    Facciamo così, usa questo codice

    Codice PHP:
    $user=$_POST['user'];
    $psw=$_POST['psw'];
    $connmysqli_connect("localhost""root""",);

    if(!
    $conn
    {
        echo 
    "La connessione è fallita, riprovare tra qualche minuto cliccando <a href='videocorsoMySql(php).php'>qui</a>";
    }
    else
    {
        if(!
    mysqli_select_db($conn,"utenti"))
        {
            echo 
    "Impossibile aprire il database 'utenti', clicca <a href='videocorsoMySql(html).php'>qui</a>";
            
        }
        else
        {    
           echo 
    "select * from accesso where usareName='$user' and psw='$psw'";
        }

    E' sostanzialmente il tuo codice, ma la query invece di essere eseguita viene stampata sulla pagina, vedi se la sintassi risulta corretta (posta anche qui cosa ti viene stampato), magari prova anche a copiarla ed eseguirla da phpMyAdmin per vedere se ti da qualche errore.

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,806
    Scusa, mi è andato ora l'occhio sul nome del campo che usi nella select: usareName

    usareName???
    Non è che c'è una e di troppo?

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2019
    Messaggi
    19
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Scusa, mi è andato ora l'occhio sul nome del campo che usi nella select: usareName

    usareName???
    Non è che c'è una e di troppo?
    Hai ragione, era questo il problema, purtroppo faccio ancora molti errori simili e dopo ci metto una vita a trovarli, grazie mille

Tag per questa discussione

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 © 2020 vBulletin Solutions, Inc. All rights reserved.