2015-06-27 4 views
2

Рассмотрим следующий кодmysql_query возвращение неправильный результат

if (isset($_SESSION['FBID']) ) { 
    $uid  = $_SESSION['FBID']; 
    $sql  = "SELECT *, count(member_nr) AS notifyMe 
       FROM poolWinners 
       WHERE member_nr = '$uid' AND notification ='1'"; 
    $result = mysql_query($sql); 
    while($row=mysql_fetch_array($result)){ 
     $notification = $row['notifyMe']; 
    }//while 
     if ($notification > 0) { 
     echo '<span class="badge">' . $notification . '</span>'; 
    } //if 
    var_dump($notification); 
} //isset($_SESSION['FBID']) 

Данный скрипт возвращает сколько уведомлений член имеет, как вы можете видеть на картинке ниже enter image description here

Моя проблема

скрипт возвращает неверный результат (неверное количество уведомлений). Взгляните на приведенную ниже таблицу, номер члена отображается 3 раза в таблице так: $notification = $row['notifyMe'] Should = 3 AND NOT 1

Что мне здесь не хватает или что-то не так? Спасибо за чтение

+0

сумму до значения в колонке уведомления? так как они выглядят как 1 для каждого, как этот 'select sumNot from poolWinners, где member_nr = '$ uid' AND notification = 1;' нет необходимости перебирать результаты, получить сумму прямо –

+0

или сделать 'select count (member_nr) from poolWinners, где member_nr = '$ uid' и notification = 1; ', и используйте счет вместо суммы, чтобы избежать значений« уведомления »больше 1. снова выполните полное значение прямо, нет необходимости перебирать результирующий набор –

ответ

1

Использование

$sql  = "SELECT *, count(*) AS notifyMe 
      FROM poolWinners 
      WHERE member_nr = '$uid' AND notification ='1'"; 

Уведомления count(*), он будет получать, сколько записей соответствия критериев.

И инициализировать $notification = 0; с самого начала.

+0

спасибо плохо дать ему пойти и сообщить вам –

+0

Спасибо, но я получаю ту же проблему –

+0

Он по-прежнему возвращается один (1) .... weird –

1

Вы пробовали подходя к нему с этой точки зрения

$sql = "SELECT * FROM poolWinners WHERE member_nr = '$uid' AND notification ='1'"; 

$result = mysql_query($sql); 
$notification = array(); 
    while($row=mysql_fetch_array($result)){ 
     $notification[] = $row['notifyMe']; 
    } 
//an array count on notification should give you the number of elements in the array i.e those that matched the query 

$total_count = count($notification); 
+0

, если вы имеете дело с небольшим количеством строк, вы можете попробовать mysql_num_rows для посмотреть, сколько строк было возвращено – danidee

1

В вашем коде уведомление будет всегда один, так как он будет принимать только NotifyMe поле последней строки в наборе результатов.

Если вы хотите, чтобы получить количество уведомлений, попробуйте этот

if (isset($_SESSION['FBID']) ) { 
    $uid  = $_SESSION['FBID']; 
    $sql  = "SELECT *, count(member_nr) AS notifyMe 
       FROM poolWinners 
       WHERE member_nr = '$uid' AND notification ='1'"; 
    $result = mysql_query($sql); 
    $notification = 0; 
    while($row=mysql_fetch_array($result)){ 
     $notification++; 
     /* 
     OR $notification += $row['notifyMe']; 
     */ 
    }//while 
     if ($notification > 0) { 
     echo '<span class="badge">' . $notification . '</span>'; 
    } //if 
    var_dump($notification); 
} //isset($_SESSION['FBID']) 
1
$sql  = "SELECT * 
      FROM poolWinners 
      WHERE member_nr = '$uid' AND notification ='1'"; 

$result = mysql_query($sql); 
$notification = mysql_num_rows($result); 
1
$sql = "SELECT * FROM poolWinners WHERE member_nr = '$uid' AND notification ='1'"; 

if ($result=mysqli_query($con,$sql)) 
    { 
    // Return the number of rows in result set 
echo "Toal notification".mysqli_num_rows($result); 
    } 

mysqli_close($con); 
?> 
Смежные вопросы