2014-10-12 3 views
2

Так что я пытаюсь сравнить сегодняшнюю дату и дату последней записи в базе данных. По какой-то причине код не работает, и сравнение всегда неверно.Неправильное сравнение строк в PHP с MySQl

$recentMood = mysqli_query($db_connection, "SELECT * FROM DemoUser ORDER BY date DESC LIMIT 1'"); 

    $today = date('Y-m-d'); 



    if($recentMood['date'] != $today){ 
     mysqli_query($db_connection, "INSERT INTO DemoUser (Mood, date) VALUES('$mood' , NOW())"); 
     echo "Mood recorded!"; 
    } 

    else{ 


    echo "Mood already recorded."; 
    } 

P.S: Когда я пытаюсь повторить либо $ сегодня или $ recentMood [ 'дата'], то я получаю сообщение об ошибке. Любая причина, почему?

ответ

0

Вы сравниваете внутри источника if строку даты.

if($recentMood['date'] != $today){ 

Fetch результаты первого:

$query = mysqli_query($db_connection, "SELECT * FROM DemoUser ORDER BY date DESC LIMIT 1"); 
if($query->num_rows > 0) { 
    $recentMood = $query->fetch_assoc(); // fetch it, you skipped this step 
    $today = date('Y-m-d'); 

    $mood = $db_connection->real_escape_string($mood); 
    if($recentMood['date'] != $today){ 
     mysqli_query($db_connection, "INSERT INTO DemoUser (Mood, date) VALUES('$mood' , NOW())"); 
     echo "Mood recorded!"; 
    } else { 
     echo "Mood already recorded."; 
    } 
} 
+0

спасибо. – taytay

+0

@taytay рад, что это помогло – Ghost

0

Я считаю, что, чтобы сделать эту работу должным образом, вам необходимо преобразовать дату из базы данных в работоспособное метку времени.

if ($recentMood['date']) { 
    $past_mood = date('Y-m-d', strtotime($recentMood['date'])); 
} 
$today = date('Y-m-d'); 

if($past_mood != $today){ 
     mysqli_query($db_connection, "INSERT INTO DemoUser (Mood, date) 
            VALUES('$mood' , NOW())"); 
     echo "Mood recorded!"; 
} 
Смежные вопросы