Как обновить datetime?«Объект класса mysqli_result не может быть преобразован в строку» - PullRequest
0 голосов
/ 21 июня 2019

Я использую php с phpmyadmin, мне нужно обновить переменную datetime в моей таблице, но, несмотря на то, что я пробовал более 30 разных вещей, я получаю сообщение «Исправимая фатальная ошибка: объект класса mysqli_result не может быть преобразованв строку ... logout.php в строке x ", которая является строкой $ sql.

Я пытался заменить текущий $ sysdate многими вещами.Я также пытался удалить оператор "where" и протестировать переменную $ _SESSION ['codloguser'], но они выглядят нормально, и я продолжаю получать одно и то же сообщение об ошибке.

<?php
    $connection = mysqli_connect("localhost","root","") or die("Connection failed. ".mysqli_error());

    @session_start();
    $query = mysqli_query($connection,"SELECT LAST_INSERT_ID()") or die (mysqli_error());
    $_SESSION["codloguser"] = $query;

    $sysdate = mysqli_query($connection,"SELECT SYSDATE();");
    $sql = mysqli_query($connection,"UPDATE tb_log_user set leave_date = '$sysdate' where cod_log_user = '$_SESSION[codloguser]'") or die (mysqli_error());
?>

То, что вы видите, этомоя последняя попытка на данный момент, у меня нет идей, я был бы очень признателен, если бы кто-нибудь мог помочь мне заставить это работать!

Ответы [ 3 ]

0 голосов
/ 21 июня 2019

Вы должны сделать что-то подобное

$mysqli = new mysqli("localhost","root","");
@session_start();

$last_insert = $mysqli->insert_id;
$_SESSION["codloguser"] = $last_insert;

$sysdate = $mysqli->query("SELECT SYSDATE();")->fetch_array()[0]

$mysqli->query("UPDATE tb_log_user SET leave_date = '$sysdate' WHERE cod_log_user = '$_SESSION[codloguser]'");

Потому что ваши запросы не получены в вашем текущем коде! Я надеюсь, что это поможет

0 голосов
/ 22 июня 2019

Я наконец-то заставил его работать, спасибо всем за попытку помочь, вот окончательный код:

<?php
    $connection = mysqli_connect("localhost","root","") or die("Connection failed. ".mysqli_error());

    @session_start();
    $query = mysqli_query($connection,"SELECT LAST_INSERT_ID()") or die (mysqli_error());
    while($row=mysqli_fetch_row($query_cod_log_user)){
        $query_cod_log_user2 = $row[0];
    }
    $_SESSION["codloguser"]= $query_cod_log_user2;

    date_default_timezone_set('America/Sao_Paulo');
    $raw=time();
    $leavedate=date("Y-m-d H:i:s", $raw);
    $cod_log=$_SESSION['codloguser'];
    mysqli_query($connection,"UPDATE tb_log_user set leave_date = '$leavedate' where cod_log_user = '$cod_log'") or die (mysqli_error());
?>

Некоторые из вас отметили, что утверждение "или умри" вредно для безопасности. Я могу просмотреть все свои файлы и удалить их, как только закончу с кодом. Еще раз большое спасибо за помощь!

0 голосов
/ 21 июня 2019

Поскольку mysqli_query () возвращает MySql Result Object.Нам нужно преобразовать его в массив, поэтому передайте объект результата в функцию mysqli_fetch_assoc ().

<?php
    $connection = mysqli_connect("localhost","root","") or die("Connection failed. ".mysqli_error());

    @session_start();
    //pass mysqli_query() return Result Oject so we need to convert into array
    $query = mysqli_fetch_assoc(mysqli_query($connection,"SELECT LAST_INSERT_ID() as last_inserted_id")) or die (mysqli_error());
    $_SESSION["codloguser"] = $query['last_inserted_id'];

    $sysdate = mysqli_fetch_assoc(mysqli_query($connection,"SELECT SYSDATE() as date"));
    //If your DB field type is not timestamps then add below line
    $sysdate = date("Y-m-d", $sysdate['date']);
    $sql = mysqli_query($connection,"UPDATE tb_log_user set leave_date = '$sysdate' where cod_log_user = '$_SESSION[codloguser]'") or die (mysqli_error());

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...