2015-05-27 4 views
0

У меня есть система входа, которая отлично работает на моем компьютере, но, похоже, запрос не работает при входе в систему с использованием пользовательского интерфейса HTML на сервере. Я скопировал и запустил запрос непосредственно на сервере и отлично работал. Ошибка я получаю:запрос работает нормально на локальной машине, но сбой на сервере

mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given

код выглядит следующим образом:

<?php 
    include_once 'header.php'; 

    $error = ""; 
    $userID = ""; 
    $username = ""; 

    $userName = isset($_POST["userName"]) ? sanitizeString($_POST["userName"]) : ""; 
    $pass = isset($_POST["pass"]) ? sanitizeString($_POST["pass"]) : ""; 


if (isset($_POST["login"])) 
{ 
    if (empty($userName) || empty($pass)) 
     $error = "<span class='error'>Not all fields were entered</span><br />"; 
    else 
    { 
     $login_query = "SELECT 
        * 
       FROM users 
       WHERE username = ? 
       AND pass = ?"; 
     $login_result = queryMysqli($login_query,array(
         array("s",$userName), 
         array("s",md5($salt.$pass.$pepper))) 
         ); 

     if (mysqli_num_rows($login_result) == 0) 
      $error = "<span class='error'>Username/Password invalid</span>"; 
     else 
     { 
      $row = mysqli_fetch_array($login_result); 
      $userID = $row["ID"]; 
      $username = $row["username"]; 

      //Add to session 
      $_SESSION['userID'] = $userID; 
      $_SESSION['username'] = $userName; 

      header("location:manageAdverts.php"); 
      EXIT; 
     } 
    } 
} 
?> 

<div class="container"> 
    <div class="col-sm-10"> 
     <div class="row"> 
      <div id="main_body"> 
       <div style="padding:55px;"> 
        <div class="white_background " style="max-width:450px;margin-top:40px;"> 
         <span style="color:red;"><?php echo $error; ?></span> 
          <p style="font-family: 'Oswald', sans-serif;font-size:26px;margin-bottom:20px;">Login</p> 
          <div style="border-right:1px solid blue;float:left;"> 
           <form class="form-horizontal" method="post" > 
            <div class="form-group"> 
             <div class="col-xs-10"> 
              <input type="text" class="form-control" placeholder="Username" name="userName" autofocus value="<?php echo $userName; ?>"> 
             </div> 
            </div> 
            <div class="form-group"> 
             <div class="col-xs-10"> 
              <input type="password" class="form-control" placeholder="Password" name="pass" value="<?php echo $pass; ?>"> 
             </div> 
            </div> 
            <div class="form-group"> 
             <div class="col-xs-offset-2 col-xs-10"> 
              <div class="checkbox"> 
               <label><input type="checkbox"> Remember me</label> 
              </div> 
             </div> 
            </div> 
            <p></p> 
            <button style="background:#0B0B61;" type="submit" class="btn btn-primary" name="login">Login</button> 
           </form> 
          </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

<?php include_once "footer.php"; ?> 
+2

Как выглядит ваша функция 'queryMysqli'? Прочитайте сообщение об ошибке, в нем говорится, что вы пытаетесь ввести логическое значение в 'mysqli_num_rows', поэтому проверьте, какой результат имеет' queryMysqli', хранящийся в '$ login_result'. –

ответ

0

Попробуйте изменить эту строку

if (mysqli_num_rows($login_result) == 0) 

к

if (mysqli_num_rows($login_result) === FALSE) 

и скажите мне, если он решает ошибку!

+0

Его теперь ошибка бросания в заявлении sql – user3034845

+0

@ user3034845, что говорит об ошибке? –

+0

Указывает на функцию, использующую оператор запроса. Другими словами, это указывает на сам запрос. – user3034845

0

возвращается false

Изменить

if (mysqli_num_rows($login_result) == 0) 

в

if (!$login_result || mysqli_num_rows($login_result) == 0) 
+0

По-прежнему такое же сообщение об ошибке - mysqli_fetch_array() ожидает, что параметр 1 будет mysqli_result – user3034845

+0

Это не то же самое. Теперь вы получаете 'mysqli_fetch_array()' – sqluser

0

попробовать

$login_query = "SELECT * " 
$login_query .= "FROM users " 
$login_query .= "WHERE username = ? " 
$login_query .= "AND pass = ?"; 

И

if (mysqli_num_rows($login_result) === FALSE) 
      $error = "<span class='error'>Username/Password invalid</span>"; 
+0

C: все еще выдавать ошибку: «mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, boolean задан« – user3034845

+0

try if (! $ Login_result || mysqli_num_rows ($ login_result) === 0) –

+0

pointing вернитесь к запросу снова – user3034845

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