参数不匹配mysql_fetch_assoc()

时间:2016-01-26 01:32:23

标签: php html mysql

<?php
    include('connection/connection.php');

    $uname=$_POST['uname'];
    $password=$_POST['password'];

    $sql=mysql_query("SELECT * FROM elemschool_admin WHERE admin_UName='$uname' AND admin_pass='$password'");
    $sql1=mysql_query("SELECT * FROM elemschool_faculty WHERE facultyID='$uname' AND faculty_password='$password'");
    $row=mysql_fetch_assoc($sql1);

    $cout=mysql_num_rows($sql);
    $cout1=mysql_num_rows($sql1);

    if($cout>0){
        $_SESSION['id']=$uname;
        header("location: modules/admin/index.php");
    }
    else{
        ?>
        <script>
            alert("Wrong Input!");
            window.location="index.php";
        </script>
        <?php
    }
?>  

我收到了错误:

  

警告:mysql_fetch_assoc()期望参数1是资源,布尔值在

中给出

2 个答案:

答案 0 :(得分:0)

  1. 由于mysql_fetch_assoc返回bool,因此sql查询中很可能出现错误(很可能是错误的,例如查询失败)。使用mysql_error功能查找问题。

  2. mysql_*已弃用,请切换为mysqli_*

  3. 使用mysqli中的准备好的查询或至少使用escape_string来逃避所有输入,以避免SQL注入。

答案 1 :(得分:0)

注意mysql_函数已弃用,将在即将推出的php版本7中删除。

在将$result传递给mysql_fetch_array之前检查$username = mysql_real_escape_string($_POST['username']); $password = $_POST['password']; $result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '$username'"); if($result === FALSE) { die(mysql_error()); // TODO: better error handling } while($row = mysql_fetch_array($result)) { echo $row['FirstName']; } 。您会发现它是错误的,因为查询失败了。有关可能的返回值以及如何处理它们的建议,请参阅mysql_query文档。

参考此示例:

xml