ich eine SELECT
Abfrage, die Informationen von einem Benutzer abruft:
einige persönliche Daten, und die ihm zugewiesene Benutzerrollen innerhalb der Website, die mehr als eine sein kann (im Beispiel gibt es zwei).
Ich möchte diese Benutzerrollen abrufen und sie der globalen Variablen $_SESSION
hinzufügen.
Dies ist die Abfrage (in phpMyAdmin getestet und es funktioniert wie beabsichtigt: ruft zwei Reihen von Ergebnissen, da der Benutzer das gleiche ist, aber er hat zwei Rollen role1 und role2):
$conectar = mysqli_connect(localhost, USER, PASS, DATABASE);
$consulta = "SELECT usuarios.userID, usuarios.userEmail, usuarios.userPass, usuarios.userFechaGeneracion, usuarios.userNombres, rolesUsuarios.nombreRol
FROM rolesUsuarios, usuarios
WHERE usuarios.userEmail='$email'
";
$buscarUsuario = mysqli_query($conectar,$consulta);
if ($buscarUsuario) {
$row = mysqli_fetch_array($buscarUsuario);
[here I have some pass check in place]
$_SESSION['usuario'] = $email;
$_SESSION['nombre'] = $row['userNombres'];
$_SESSION['uid'] = $row['userID'];
$_SESSION['nombreRol'] = $row['nombreRol'];
....
Jetzt $_SESSION['nombreRol']
war eine Schnur. Wenn ich es ausgedruckt habe, wird nur ROLE1 angezeigt. So
Ich versuchte es auf ein Array zu konvertieren eine Schleife durch das Hinzufügen dieser:
$_SESSION['nombreRol'] = array();
for ($i=0; $i < 3; $i++) {
array_push($_SESSION['nombreRol'], $row['nombreRol']);
}
Und dann getötet die Sitzung und begann erneut, diesmal versucht, es als ein Array zu drucken mit diesem: print_r(array_values($_SESSION['nombreRol']));
und das Ergebnis zeigt:
Array ([0] => ROLE1 [1] => ROLE1 [2] => ROLE1)
Wie soll ich alle Rollen in einer Reihe, um es zu benutzen?
Nach Shrikant Mavlankar Kommentar, habe ich das versucht:
$rolesAsignados = array();
while($row = mysqli_fetch_array($buscarUsuario)){
array_push($rolesAsignados, $row['nombreRol']);
}
$_SESSION['nombreRol'] = array();
for ($i=0; $i < count($rolesAsignados); $i++) {
array_push($_SESSION['nombreRol'], $rolesAsignados[$i]);
}
Und dann versucht, die Sitzung Array zu drucken:
print_r(array_values($_SESSION['nombreRol']));
Es zeigt:
Array ([0] => ROLE2)
Weil Sie in Ihrer for-Schleife denselben Wert von $ row ['nombreRol'] in das Session-Array schieben. Ich habe meine Antwort unten hinzugefügt und lassen Sie mich wissen, ob es für Sie funktioniert. –
Ihre Abfrage addiert sich nicht. Sie machen nur eine Auswahl für alle Rollen für den Benutzer. Wenn Sie also 10 Rollen in der Rollentabelle haben, erhalten Sie 10 Datensätze für alle Rollen, kombiniert mit den Benutzerdaten. Das kann nicht korrekt sein, da Sie ein 'JOIN' erstellen müssen, um die richtigen Daten auszuwählen. Wenn ein Benutzer mehrere Rollen haben kann, können Sie auch nicht die Daten des Benutzers UND die Rollen in einer Abfrage auswählen. – DarkBee
auch ich denke, Sie wollen 'fetch_assoc' nicht' fetch_array' – chiliNUT