Member 12986530 Ответов: 1

РНР промыслового неустранимая ошибка


у меня есть эта ошибка при вставке $diff в мою таблицу базы данных
time_in(time)
но у меня есть эта ошибка
Catchable fatal error: Object of class DateInterval could not be converted to string
ошибка в моем запросе

Что я уже пробовал:

$conn = mysqli_connect(server,username,password)
        or die (mysqli_error($conn));
mysqli_select_db($conn,database)
            or die (mysqli_error($conn));

if ($now->format("H:i") > "22:00") {
    $deadline = DateTime::createFromFormat("H:i", "22:00");
    $diff = $now->diff($deadline);
    echo "You are ".$diff->h." hours and ".$diff->i." minutes late";
} else if ($now->format("H:i") > "19:00") {
    $deadline = DateTime::createFromFormat("H:i", "19:00");
    $diff = $now->diff($deadline);
    echo "You are ".$diff->h." hours and ".$diff->i." minutes late";
} else if ($now->format("H:i") > "16:00") {
    $deadline = DateTime::createFromFormat("H:i", "16:00");
    $diff = $now->diff($deadline);
    echo "You are ".$diff->h." hours and ".$diff->i." minutes late";
} else if ($now->format("H:i") > "13:00") {
    $deadline = DateTime::createFromFormat("H:i", "13:00");
    $diff = $now->diff($deadline);
    echo "You are ".$diff->h." hours and ".$diff->i." minutes late";
} else if ($now->format("H:i") > "10:00") {
    $deadline = DateTime::createFromFormat("H:i", "10:00");
    $diff = $now->diff($deadline);
    echo "You are ".$diff->h." hours and ".$diff->i." minutes late";
} else if ($now->format("H:i") > "07:00") {
    $deadline = DateTime::createFromFormat("H:i", "07:00");
    $diff = $now->diff($deadline);
    echo "You are ".$diff->h." hours and ".$diff->i." minutes late";
}

$query = "INSERT INTO `time_in`(`late`,`date_in`)
                VALUES ('$diff',NOW())";
                if (!$query) {
                printf("Error: %s\n", mysqli_error($conn));
                exit();
                } 
        if($query = $conn ->query($query)){
            echo "<br>successful";
        } else {
            echo "not successful";
        }

1 Ответов

Рейтинг:
1

Peter Leow

Это потому что

$diff
это
DateInterval
объект, а не строка. Чтобы вставить строковое представление интервалов в часах и минутах, сделайте следующее:
$diff->format("%H:%i")

Не использовать PHP подготовленные заявления[^] чтобы избежать риска SQL-инъекции.


Member 12986530

я меняю $diff - & gt;format ("H:i") на $diff - > format ('H:i'), потому что это дает мне ошибку синтаксического анализа error: синтаксическая ошибка, неожиданная 'H' (T_STRING), но когда я меняю ее на одинарную кавычку, она дает мне следующее уведомление: Undefined property: DateInterval::$format

Peter Leow

Так и должно быть
$diff - & gt;формат ("%H:%i")

Member 12986530

я переодеваюсь в

$diff->format("H:i")
потому что я получаю это
Parse error: syntax error, unexpected 'H' (T_STRING)
так что измените его на
$diff->format('H:i')
но я все еще получаю это
Notice: Undefined property: DateInterval::$format

Peter Leow

Решение исправлено.