2017-03-02 2 views
-1

Ich habe eine Tabelle für Unternehmen und eine andere für Mitarbeiter. Nachdem ein Geschäft angemeldet ist, können sie Mitarbeiterkonten zuweisen. Ich machte eine Login-Funktion, um Unternehmen anzumelden und alles war gut. Um die Dinge in Ordnung zu halten, habe ich die Angestellten getrennt, die die Unternehmen zu einer anderen Tabelle hinzufügen werden. Jetzt weiß ich, dass ich zwei Anmeldeformulare für Unternehmen und eine für Angestellte erstellen kann und die Abfrage in der jeweiligen Tabelle einchecken kann, aber gibt es eine Möglichkeit, sie in einer Form zu halten und eine Abfrage zu erstellen, die überprüft, ob der Benutzername das möchte Login ist ein Geschäft oder ein Angestellter? AKA Daten von zwei Tabellen in meinem Fall holen. Ich habe diese Login-FunktionSie müssen Login-Felder aus zwei Tabellen überprüfen

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

ich diesen Fehler

mysqli_fetch_array() erwartet 1 Parameter MySQLi_Result werden, boolean auf Linie 12 gegeben, die diese Zeile while ($ row ist = mysqli_fetch_array ($ sql))

Hinweis: Ich habe ein Feld in der Tabelle Unternehmen und in der Tabelle 'Ebene', wenn der Wert '3' ist, dann ist das Konto ein Mitarbeiter und wird an die Mitarbeiter-Seite geleitet. Aber die Login-Funktion scheint nicht mehr in die Schleife zu gehen. Danke!

+0

geben 'Echo mysqli_error ($ con)' danach ... –

+1

ich würde Rollen anstelle von zwei Tabellen. Haben Sie eine Benutzertabelle (keine Business-Tabelle), in der der Hauptbenutzer für jedes Unternehmen zusätzliche Benutzer erstellen kann, die nur eine Benutzerrolle haben. –

+0

Ihre Abfrage schlägt wahrscheinlich fehl, versuchen Sie, die SQL-Anweisung direkt in der Datenbank auszuführen und zu sehen, was sie zurückgibt, damit wir feststellen können, wo das Problem liegt. – TopCheese

Antwort

0

Ich glaube, die Syntax für die mysqli_fetch_array() ist falsch. Aus dem php.net Handbuch:

/* 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

Das ist falsch, der Standardparameter für den Ergebnistyp (optionaler Parameter) der Funktion mysqli_fetch_array() ist MYSQLI_BOTH. Sie müssen MYSQLI_NUM oder MYSQLI_ASSOC nicht angeben. – TopCheese

0

Es sollte so sein.

wenn Feld in bussinesses Tabelle der es b.fieldname reffered wird und wenn es die Mitarbeiter in der Tabelle ist, dann wird es e.fiieldname

wenn Benutzername und Passwort-Feld ist in Tabelle employee dann

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

wenn Benutzername und Passwort-Feld in bussinesses ist Tabel dann

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