查询在本地计算机上正常工作但在服务器上失败

时间:2015-05-27 06:55:44

标签: php mysql sql mysqli

我的计算机上有一个正常工作的登录系统,但是当使用服务器上的HTML用户界面登录时查询似乎不起作用。我已直接在服务器上复制并运行查询,并且工作正常。我得到的错误是:

  

mysqli_num_rows()期望参数1为mysqli_result,boolean   给定

代码如下:

<?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"; ?>

3 个答案:

答案 0 :(得分:0)

尝试更改此行

if (mysqli_num_rows($login_result) == 0)

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

并告诉我它是否解决了错误!

答案 1 :(得分:0)

$login_result正在返回false

更改

if (mysqli_num_rows($login_result) == 0)

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

答案 2 :(得分: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>";