2017-03-02 5 views
-1

私はビジネス向けのテーブルと従業員用のテーブルを用意しています。ビジネスがログインした後、従業員アカウントを割り当てることができます。私はビジネスにログインするためにログイン機能を作った。組織を整理しておくために、企業が別のテーブルに追加する従業員を分けました。今私は、ビジネス用のフォームと従業員のための2つのログインフォームを作成し、それぞれのテーブルでクエリをチェックすることができますが、1つのフォームに保持して、ログインはビジネスまたは従業員ですか? AKA私のケースでは2つのテーブルからデータを取得します。 私はこのエラーに2つのテーブルからログインフィールドを確認する必要があります

mysqli_fetch_arrayを(取得しています。このログイン機能

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; 
    } } 

を持っている)は、パラメータ1をmysqli_resultされることを想定し、($行= mysqli_fetch_array($ながら、この行である12行目に指定したboolean sql)

注:値が '3'の場合、ビジネステーブルと従業員テーブルに「レベル」というフィールドがあり、そのアカウントは従業員であり、従業員ページに転送されます。しかし、ログイン機能は、もうループに入り込まないようです。ありがとう!

+0

はその後、 ''エコーmysqli_error($詐欺)を得tabel ... –

+1

私は役割の代わりに2を使用しますテーブル。各ビジネスのマスターユーザーがユーザー役割を持つ追加のユーザーを作成できるユーザーテーブル(ビジネステーブルなし)を用意します。 –

+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

このようにする必要があります。

それはb.fieldnameをrefferedますし、それが従業員テーブルにある場合は、ユーザー名とパスワードフィールドが、その後、従業員テーブルに

$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"; 
であれば、それはe.fiieldname

をrefferedますTHEフィールドがbussinessesテーブルにある場合

ユーザー名とパスワードフィールドがbussinessesにある場合は、

$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"; 
関連する問題