PHP page does not identify SELECT result

Asked

Viewed 51 times

1

I’m making a PHP page to show database information, but it does not give error and only returns ":0" on the page, as if no result of the SELECT (only enters the else).

Follows the code:

<?php
    $conexao = mysqli_connect("localhost","root","") 
    or die("Erro na conexão com banco de dados");      
    $select_db = mysqli_select_db($conexao,"mentoria"); 
    $campos = array(".", "-");      

    $cpf = str_replace($campos,"",$_POST["inputCPF"]);

    $consulta_jovens = "SELECT jCPF AS jovem, ((CASE WHEN jovem.jfaixaetaria = mentor.mfaixaetaria THEN 1 ELSE 0 END)+(CASE WHEN jovem.jescolaridade = mentor.mescolaridade THEN 1 ELSE 0 END)+(CASE WHEN jovem.jhobby = mentor.mhobby THEN 1 ELSE 0 END)+(CASE WHEN jovem.jcomida = mentor.mcomida THEN 1 ELSE 0 END)+(CASE WHEN jovem.jmusica = mentor.mcomida THEN 1 ELSE 0 END)+(CASE WHEN jovem.jesporte = mentor.mesporte THEN 1 ELSE 0 END)+(CASE WHEN jovem.jtime = mentor.mtime THEN 1 ELSE 0 END)+(CASE WHEN jovem.jcaracteristica = mentor.mcaracteristica THEN 1 ELSE 0 END)+(CASE WHEN jovem.janimal = mentor.manimal THEN 1 ELSE 0 END)+(CASE WHEN jovem.jlivro = mentor.mlivro THEN 1 ELSE 0 END)+(CASE WHEN jovem.jsonho = mentor.msonho THEN 1 ELSE 0 END)) AS qtdCaracteristicasIguais FROM jovem INNER JOIN mentor ON jovem.jcidade = mentor.mcidade AND jovem.jestado = mentor.mestado WHERE mentor.mcidade = jovem.jcidade AND mentor.mestado   = jovem.jestado AND mentor.CPF ='$cpf'";

    $string_sql = "SELECT * FROM mentor WHERE CPF='$cpf'";  

    $result= mysqli_query($conexao, $string_sql); 

    $resultadojovens = mysqli_query($conexao,$consulta_jovens);

    $dado = mysqli_fetch_array($result);    
    $aluno = mysqli_fetch_array($resultadojovens);

    $alunosel = $aluno['qtdCaracteristicasIguais'];
    $nome = $dado['mnome'];     

    if(mysqli_affected_rows($conexao) == 1){ 
        echo "<p><h2>Olá, $nome! <br><br> Escolha o seu mentorando abaixo:</h2></p>
        <br>
        <br>
        <p>$resultadojovens</p>";

    } else {
        echo mysqli_errno($conexao) . ": " . mysqli_error($conexao) . "\n";
    }

    mysqli_close($conexao); 

1 answer

3


Probably the problem is the use of this function:

mysqli_affected_rows

The mysqli_affected_rows serves to obtain the number of changes to a DELETE or UPDATE, or to identify whether the operation is a REPLACE that inserted or that only updated.

If you want the number of rows returned by a SELECT should use this:

mysqli_num_rows

Maybe it’s the case to use if(mysqli_num_rows($conexao)) without the ==1 so that the if enter the first condition even if the number of lines is greater than zero, not just one.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.