Warning: mysqli_fetch_array e mysqli_num_rows

di il
2 risposte

Warning: mysqli_fetch_array e mysqli_num_rows

Buongiorno ragazzi e grazie per chi vorrà darmi una mano.
Sto riscontrando delle difficoltà nel risolvere due warning (questo pezzo di codice, tra l'altro, dovrebbe consentirmi di effettuare il login, ma nonostante le credenziali siano corrette, il risultato è sempre 'Dati errati').

Di seguito i warning in questione:
- Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in /home/tuttoco1/prova.it/login.php on line 22
- Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in /home/tuttoco1/prova.it/login.php on line 27

Di seguito i pezzi di codice:
- Line 22: while ($sezione=mysqli_fetch_array($ris5))
- Line 27: $count=mysqli_num_rows($ris5);

Di seguito il codice completo del file login.php:
<?php
session_start();   ?>
 <body bgcolor="black" color=white>
 <center> <font color="white" size=20>  <br> <br><br> <?php
include("config.php");
if(isset($_SESSION['password2']))
{

       
          print("<script> location.replace('index3.php'); </script>"); exit();   
          } else {       
  
   
$mypassword=$_POST['Password'];
$nome=$_POST['Nome'];   
$cognome=$_POST['Cognome'];


$sql5="SELECT * FROM config WHERE Password='$mypassword' and Nome='$nome' and Cognome='$cognome'";
$ris5=mysqli_query($conn,$sql5); 
 
  while ($sezione=mysqli_fetch_array($ris5))
  {
  $co=$sezione['Tipo'];
   $CCA=$sezione['Codice'];   }
   
$count=mysqli_num_rows($ris5);
    if($count==0)
     { 
       print("DATI ERRATI.");
       print("<br><a href=\"index3.php\">Riprova.</a><BR> ");
       
     }
         else             
         {
                                        $_SESSION['nome']=$nome;
                                           $_SESSION['cognome']=$cognome;
                                         $_SESSION['liv']=$co;
                                         $_SESSION['password2']=$mypassword;
                                         $_SESSION['codice']=$CCA;
                                            
                                  
                                 
                                       print("<script>location.replace('index.php'); </script>");
                                        }
                                 
                     

?> 
<BR>           
<?php } ?>
</body>
</html> 

2 Risposte

  • Re: Warning: mysqli_fetch_array e mysqli_num_rows

    Bool given significa che l'input è di tipo bool (true o false), poiché usi variabile dentro una variabile $sql5 sicuramente non tutti i valori degli indici esistono.
    Il codice non mostra cosa deve fare (ergo non esiste un doc che spiega cosa fa). Probabilmente $_POST['indice'] non è definito ma forse lo sarà in $_SESSION['indice'].
    Oppure assicurati che il form HTML contenga gli elementi con name indice.
    Nb* è uno pseudo codice indice è inteso per spiegare l'indice di una matrice ma può essere qualsiasi testo che ovviamente è abbinato al codice php.
  • Re: Warning: mysqli_fetch_array e mysqli_num_rows

    Nella documentazione di PHP è scritto tutto

    https://www.php.net/manual/en/mysqli.query.ph

    $ris5 vale false (ossia un booleano) se la query fallisce.
    Potresti dunque cambiare il codice così
    
    $sql5="SELECT * FROM config WHERE Password='$mypassword' and Nome='$nome' and Cognome='$cognome'";
    $ris5=mysqli_query($conn,$sql5);
    
    if (!$ris5) {
      exit ("Errore nella query...indaga: $sql5";
    }
     
      while ($sezione=mysqli_fetch_array($ris5))
    ...
    
Devi accedere o registrarti per scrivere nel forum
2 risposte