UPDATE giving error but updates database

3

IamcreatingaloginpagewhereIneedtowritetotheMySQLdatabasethedateandtimetheuserwasloggedin.InthedatabaseIhaveatablesomethinglikethis:

____________________________________________________|nome|login|senha|login_on|----------------------------------------------------|Sarah|Sarah@|Sarah123|22/07/201616:30:24|----------------------------------------------------

WhenIloginIgettheerrormessageonthescreenasshownintheimage,butwhenIenterthedatabaseandgivearefreshitshowstheupdatedtablewithlogin_onfieldfilled.Idonotunderstand,doesanyoneknowtellmewhyitperformstheUPDATEandshowserrormessage?

Theregoesthecode:

<?php//Páginadelogindeagentesinclude("conection.php");
if((isset($_POST['login']))&&(isset($_POST['senha']))){

    session_start();
    date_default_timezone_set('America/Sao_Paulo');
    $date = date("d-m-Y H:i:s");

    $login = $_POST['login'];
    $senha = $_POST['senha'];

    $query = mysqli_query($conecta,"SELECT login_ag, senha_ag FROM agente WHERE login_ag LIKE '$login' AND senha_ag LIKE '$senha'");
    $rows = mysqli_num_rows($query);
    if($rows > 0){
        $_SESSION['login'] = $login;
        $_SESSION['senha'] = $senha;
        $sql = mysqli_query($conecta,"UPDATE agente SET login_on = '$date' WHERE login_ag = '$login' AND senha_ag = '$senha'");
        if(mysqli_query($conecta,$sql)){
            echo "login_on modificado com sucesso!";
        }else{ echo "erro ao relizar o login_on";}
        //header('location:paginadeagente.php');    
        //echo $login.' '.$senha;
        echo $date;
    }else{
        unset ($_SESSION['login']);//<--destruindo variável
        unset ($_SESSION['senha']);//<--destruindo variável
        echo "<script>alert('Usuário ou senha incorretos!');</script>";
        //header('location:login.php');
    }

    //$End = microtime(true);
    //$Final = number_format(($End-$Start),6);

    //echo "<br><br>"."tempo gasto: $Final";
}

mysqli_close($conecta);

?>
    
asked by anonymous 22.07.2016 / 21:42

2 answers

2

Your query is running inside the other:

//primeira ocorrência
$sql = mysqli_query($conecta,"UPDATE agente SET login_on = '$date' WHERE login_ag = '$login' AND senha_ag = '$senha'");

//segunda ocorrência
if(mysqli_query($conecta,$sql)){
   echo "login_on modificado com sucesso!";
}else{
   echo "erro ao relizar o login_on";
}

Declare the variable $sql only as a normal string:

$sql = "UPDATE agente SET login_on = '$date' WHERE login_ag = '$login' AND senha_ag = '$senha'"

Then use it normally:

if(mysqli_query($conecta,$sql)){
 echo "login_on modificado com sucesso!";
}else{
 echo "erro ao relizar o login_on";
}
    
22.07.2016 / 21:59
2

Look for a logic error in the block below:

    //primeira ocorrência
    $sql = mysqli_query($conecta,"UPDATE agente SET login_on = '$date' WHERE login_ag = '$login' AND senha_ag = '$senha'");
    if(mysqli_query($conecta,$sql)){//segunda ocorrência 
       echo "login_on modificado com sucesso!";
    }else{
       echo "erro ao relizar o login_on";
    }

The same query is executed twice, the second being invalid because $sql is no longer a string but a resouce or false.

    
22.07.2016 / 21:54