2017-03-02 62 views
-1

我有一个企业表和另一个员工表。企业登录后,他们可以分配员工账户。我做了登录功能登录企业,一切都很好。为了保持组织有序,我将员工分开,企业将添加到另一个表中。现在我知道我可以为企业创建两个登录表单,并为员工创建两个登录表单,并在每个对应的表中进行查询检查,但有没有办法将它保存在一个表单中,并进行查询以检查是否希望登录是企业还是员工?在我的情况下,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行给定的boolean这是本线,而($行= mysqli_fetch_array($ SQL))

注意:如果企业表和雇员表中名称分别为'3',那么我在企业表和雇员表中有一个字段,那么该帐户就是一名雇员,并且将被定向到雇员页面。但登录功能似乎不再进入循环。谢谢!

+0

给'回声mysqli_error($ CON)'后... –

+1

我会用角色而不是两个表。有一个用户表(无业务表),其中每个业务的主用户可以创建仅具有用户角色的其他用户。 –

+0

您的查询可能会失败,请尝试直接在数据库上运行SQL语句并查看它返回的内容,以便我们可以指出问题所在。 – TopCheese

回答

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"]); 
+0

这是错误的,mysqli_fetch_array()函数的结果类型(可选参数)的默认参数是MYSQLI_BOTH。您不需要指定MYSQLI_NUM或MYSQLI_ASSOC。 – TopCheese

0

它应该是这样的。

如果字段是bussinesses表中,将下文称b.fieldname,如果它是在雇员表,然后将下文称e.fiieldname

如果用户名和密码字段是EMPLOYEE表,然后

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