2015-06-10 3 views
1

Я пытаюсь показать icon.envelop.2.gif, если есть сообщения с message_status = 2. Однако по какой-то непонятной причине этот запрос возвращает 0. Что я пропустил здесь?mysqli num_rows не возвращает правильное количество строк - все значения проверены

$_SESSION['user_id'] действительно, а также $access_level. Я проверил таблицу, и у меня есть 1 вход с правильным номером message_receive, и я также попытался использовать message_to_stab = 5, который является правильным номером.

Это информация в моей базе данных:

  • message_id = 1
  • message_receive = 697
  • message_status = 2
  • message_to_stab = 5 or message_to_stab = NULL

Это мой информирует ция в сессии и access_level:

  • access_level = 5
  • $_SESSION['user_id'] = 697

Это мой код:

$sql = "SELECT message_id FROM private_messages WHERE message_status = 2 AND (message_receive = ? OR message_to_stab = ?)"; 
$stmt = $mysqli->prepare($sql) or die ("Database error: <br>" . $sql . "<br><b>Error message:</b> " . $mysqli->error); 
$stmt->bind_param("ii", $_SESSION['user_id'], $access_level); 
$stmt->execute() or die("Something went wrong"); 

if($stmt->num_rows != 0){ 
    $html .= 'icon.envelope.2.gif'; 
} 
else{ 
    $html .= 'icon.envelope.gif'; 
} 

$stmt->free_result(); 
$stmt->close(); 

Вот проблема, никаких ошибок, я не хочу, как рассылка символы должны быть как под status.

Image showing messaging error

+0

'@Gjert I. Gjersund', пожалуйста, попробуйте мой ответ один раз. и сообщите, есть ли какая-либо проблема. спасибо –

ответ

0

мне удалось использовать $stmt->fetch(), чтобы решить эту проблему. Мне пришлось изменить запрос на LIMIT 1, чтобы предотвратить ошибки, когда доступно более 1 непрочитанного сообщения.

if($stmt->fetch()){ 
    $html .= 'icon.envelope.2.gif'; 
} 
else{ 
    $html .= 'icon.envelope.gif'; 
} 

PS: Лучшие ответы более чем приветствуются. Я все еще не знаю, почему rowCount() или num_rows не работал.

+0

Пожалуйста, проверьте мой отредактированный ответ. Благодарю. –

+0

@anantkumarsingh Я еще не смог его протестировать, но функция rowCount() не работает, потому что выбран только один столбец? – PhyCoMath

+0

Нет, это не так. Я никогда не получал этого. 'rowCount()' должен работать либо с записью 1, либо с другим. –

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