2015-03-01 2 views
1

У меня есть база данных, которая имеет 2 записей в нем:MySQL, где оператор не отображает правильные результаты

id | message | date  | user | option 
---+-----------+-------------+-----------+-------- 
1 | Welcome | 2015-03-01 |   | 0 
2 | message | 2015-03-05 | admin | 0 

То, что я пытаюсь сделать, если поле пользователя пустым, он показывает сообщение всем пользователям , если есть имя пользователя (, например, admin в этом примере), оно показывает одно для этого пользователя и пустое сообщение, если оно существует.

В настоящий момент он отображает оба сообщения, если пользователь Pam (должен показывать только идентификатор 1).

Если пользователь является администратором, он отображает оба сообщения.

Похоже, его игнорирование user = '$zuser'

Что я делаю неправильно?

<?php 

    ini_set('display_errors',1); error_reporting(E_ALL); 
    $zuser=$_COOKIE['aauser']; 

    $result = mysqli_query($con,"SELECT * FROM message WHERE (user = '$zuser' OR run_date >= CURDATE() AND user='')"); 

    while($quick = mysqli_fetch_array($result))   
    { 
    echo $quick['message']; 
    echo '<script>alert("'.$quick['message'].'");</script>'; 
    } 

?> 
+0

Запустите var_dump в файле cookie, удостоверившись, что он установлен/не пуст. Также 'или die (mysqli_error ($ con))' to 'mysqli_query()' –

+0

также существует разница между 'null' и' '' (пустая строка) ' – Ghost

+0

Вы также можете попробовать удалить скобки =>' (пользователь = '$ zuser' ИЛИ ​​run_date> = CURDATE() AND user = '') '<=, делая то, что сказал Ghost. –

ответ

0

Изменить эту строку:

$result = mysqli_query($con,"SELECT * FROM message WHERE (user = '$zuser' OR run_date >= CURDATE() AND user='')"); 

к:

$result = mysqli_query($con,"SELECT * FROM message WHERE user = '$zuser' OR (run_date >= CURDATE() AND user='')"); 
+0

@Donavon вы решили свою проблему ? –

1

Найдено мою проблему @ Фред -ii-, что была кость голова ошибка я забыл, что куки были установлены только после того, как вторая страница загружена !!!

Благодарим за помощь!

<?php 
     ini_set('display_errors',1); error_reporting(E_ALL); 
     echo $zuser=$_GET['usrname']; 


    $result = mysqli_query($con,"SELECT * FROM message WHERE user = '$zuser' OR run_date >= CURDATE() AND user=''"); 

       while($quick = mysqli_fetch_array($result)) 

       { 
       echo $quick['message']; 
       echo '<script>alert("'.$quick['message'].'");</script>'; 
       } 


     ?> 
+0

* [Выдувание на пальцах] (http://stackoverflow.com/questions/28789718/mysql-where-statement-not-displaying-proper-results#comment45854940_28789718) * ;-) добро пожаловать. * Ура! * –

Смежные вопросы