需要检查两个表中的登录字段

时间:2017-03-02 17:34:56

标签: php mysql mysqli

我有一张供企业使用的桌子,另一张供雇员使用。企业登录后,可以分配员工帐户。我做了登录功能登录企业,一切都很顺利。为了保持组织有序,我将员工分开,业务将添加到另一个表中。现在我知道我可以为企业创建一个登录表单,为员工创建一个登录表单,并在每个表中进行查询检查,但有没有办法将其保存在一个表单中并进行查询以检查用户是否想要登录是企业还是员工? AKA从我的案例中的两个表中获取数据。 我有这个登录功能

    function login($username, $password)
{   $db_host="localhost";
    $db_username="root";
    $db_password="";
    $db_name="dbname";
    $con=mysqli_connect($db_host, $db_username,$db_password, $db_name);

    $qry = "SELECT * FROM businesses INNER JOIN employees on businesses.buss_id       = employees.buss_id_fk WHERE `username` = '$username' AND `password` = '$password' AND `active` = 1 LIMIT 1";
    $sql = mysqli_query($con,$qry);
    while($row = mysqli_fetch_array($sql))
    {
        return $row;
    } }

我收到此错误

mysqli_fetch_array()期望参数1为mysqli_result,第12行给出的布尔值为此行($ row = mysqli_fetch_array($ sql))

注意:我在business表和employees表中有一个名为'level'的字段,如果其值为'3',则该帐户是一名员工,并将被定向到员工页面。但登录功能似乎不再进入循环了。谢谢!

2 个答案:

答案 0 :(得分:0)

我相信mysqli_fetch_array()的语法不正确。来自php.net手册:

/* numeric array */
$row = mysqli_fetch_array($result, MYSQLI_NUM);
printf ("%s (%s)\n", $row[0], $row[1]);

/* associative array */
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);

答案 1 :(得分:0)

应该是这样的。

如果字段在bussinesses表中,它将引用b.fieldname,如果它在employees表中,那么它将引用e.fiieldname

如果用户名和密码字段在员工表中,则

$qry = "SELECT * FROM businesses b INNER JOIN employees e on b.buss_id       = e.buss_id_fk WHERE e.`username` = '".$username."' AND e.`password` = '".$password."' AND e.`active` = 1 LIMIT 1";

如果用户名和密码字段在bussinesses tabel中,那么

$qry = "SELECT * FROM businesses b INNER JOIN employees e on b.buss_id       = e.buss_id_fk WHERE b.`username` = '".$username."' AND b.`password` = '".$password."' AND b.`active` = 1 LIMIT 1";