2016-04-18 2 views
1

Я относительно новичок в PHP, и мне сложно получить правильный вывод из класса. Я использую SELECT * в подготовленном заявлении в attemp, чтобы отменить строку, в которой указан статус входа в систему. В коде Thge, который у меня есть, в настоящее время создается массив, но если зарегистрировано более одного пользователя, записываться по первой, только позволяя мне отображать одну строку.Выберите несколько строк с использованием подготовленных выражений в классе A

Обычно я мог бы достичь такой задачи с помощью массива 2d, где каждая строка представляет собой массив, содержащий массив пар ключ-значение, но мне трудно заставить это работать.

Способ заключается в следующем:

public function getUserByLoginStatus($loginStatus) { 
    $session=new mysqli(self::SERVERNAME,self::USERNAME,self::DBPASS); 
    mysqli_select_db($session,"users"); 
    $statement=$session->prepare("SELECT * FROM `logins` WHERE `loginstatus`= ? ;"); 
    $statement->bind_param('s', $this->loginStatus); 
    $statement->execute(); 
    $statement->store_result(); 
    $statement->bind_result($userId,$userHandle,$eMail,$password,$gender, 
          $loginStatus,$currentSess,$currentIpv4,$currentIpv6, 
          $lastActivity,$lastLoginDate,$lastLoginTime); 
    $numberOfRows=$statement->num_rows; 
    if($numberOfRows < 1) 
     { 
      $errorMessage="No users currently online"; 
      $statement->close(); 
      $session->close(); 
      return $errorMessage; 
     } 
    else 
     { 
      while($statement->fetch()) 
       { 
        $returnArr=['userid' => $userId, 'userhandle' => $userHandle, 'email' => $eMail, 
        'password' => $password, 'gender' => $gender, 'loginstatus' => $loginStatus, 
        'currentsess' => $currentSess, 'currentipv4' => $currentIpv4, 'currentipv6' => $currentIpv6, 
        'lastactivity' => $lastActivity, 'lastlogindate' => $lastLoginDate, 'lastlogintime' => $lastLoginTime]; 
       }     
      $statement->close(); 
      $session->close(); 
      return $returnArr;  
     } 
} 

Если таблица столбец установлен в «из» или «деактивируется», отображается правильное сообщение об ошибке. Если какой-либо 1 пользователь настроен на «in», я могу просматривать данные из полей. Если> 1 пользователь находится в режиме онлайн, отображается только последний пользователь (перезаписывается, я считаю).

Вот как я пытаюсь распечатать это в настоящее время:

Создание экземпляра, пытающийся выходные данные. Creating an instance, attempting to output data.

+0

в ваше время цикла $ returnArr = всегда будет иметь последний результат, попробуйте $ returnArr [] = –

+0

Большое спасибо! Я очень благодарен за этот ответ и за то, что у него есть другой человек, чтобы посмотреть его, это прекрасно решает вопрос. однако это только стало болезненно очевидным. Большое уважение. :) –

ответ

0

Try следуя во время цикла

while($statement->fetch()) 
{ 
    $returnArr[]=['userid' => $userId, 'userhandle' => $userHandle, 'email' => $eMail, 'password' => $password, 'gender' => $gender, 'loginstatus' => $loginStatus, 'currentsess' => $currentSess, 'currentipv4' => $currentIpv4, 'currentipv6' => $currentIpv6, 'lastactivity' => $lastActivity, 'lastlogindate' => $lastLoginDate, 'lastlogintime' => $lastLoginTime]; 
} 
+0

Большое вам спасибо за то, что нашли время, чтобы посмотреть и протянуть руку. Это прекрасно работает, как должно. Очень признателен! –

+0

Рад, что это помогло. Вы можете отметить это как принятый ответ. –

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