php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.03.2010, 12:45  
Neuer Benutzer
 
Registriert seit: 03.03.2010
Beiträge: 3
PHP-Kenntnisse:
Anfänger
clamber befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Select Abfrage über 2 Tabellen bringt keine Ausgabe

Hallo,

ich beschäftige mich gerade mit dem Thema Sessions und wollte mir mal ein kleines Loginsystem programmieren. Es funktioniert auch gut, wenn ich nur eine Tabelle (bearbeiter) nach Benutzer und Passwort (md5) abfrage. Nun habe ich eine weitere Tabelle (student) hinzugefügt. Es sollen beide Tabellen nach Benutzer und Passwort (md5) über eine Select-Abfrage kontrolliert werde.



Das Problem ist, dass ich keine Ergebnisreihe ausgegeben bekomme, wenn ich es in PHP einfüge. Teste ich den gleichen SQL-Code (andere Syntax natürlich) in HeidiSQL, dann bekomme ich das gewünschte Ergebnis. Hier die Abfrage:

PHP-Code:
    $userlogin $_POST['userlogin'];
    
$passlogin $_POST['passlogin'];
    
$passw=md5($passlogin);

    
$sql "SELECT idBearbeiter, b.idGruppen, b.Name, s.Name, idMatrikelnummer, s.idGruppen
                FROM bearbeiter b, student s 
                WHERE  
                    (b.Passwort = '$passw' AND b.Anmelden = '$userlogin')
                LIKE
                    (s.Passwort = '$passw' AND s.idMatrikelnummer = '$userlogin')"
;
    
$result mysql_query($sql) or die(mysql_error());  
    
    
$numrows mysql_num_rows($result); 
Meine Tabellen haben folgenden Aufbau:

student: idMatrikelnummer, idGruppen, Name, Vorname, Email, Passwort
bearbeiter: idBearbeiter, idGruppen, Name, Vorname, Anmelden, Passwort

Meldet sich der Student an, sollen idMatrikelnummer und Passwort in der Tabelle "student" abgefragt werden.
Meldet sich der Bearbeiter an, sollen Name und Passwort in der Tabelle "bearbeiter" abgefragt werden.

Das Feld idGruppe ist der Fremdschlüssel von einer weiteren Tabelle (Gruppe) wo die Gruppenbezeichnungen gespeichert sind.


Wie gesagt, frage ich nur eine der beiden Tabellen ab, bekomme ich die gewünsche Ergebniszeile ausgegeben.

Gruß
Clamber
clamber ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.03.2010, 13:05  
thomas_w
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von clamber Beitrag anzeigen
$sql = "SELECT idBearbeiter, b.idGruppen, b.Name, s.Name, idMatrikelnummer, s.idGruppen
FROM bearbeiter b, student s
WHERE
(b.Passwort = '$passw' AND b.Anmelden = '$userlogin')
LIKE
(s.Passwort = '$passw' AND s.idMatrikelnummer = '$userlogin')";

$result = mysql_query($sql) or die(mysql_error());
Der SQL ist an der fett markierten Stelle meiner Meinung nach falsch bzw. macht nicht das was Du erwartest. Die SQL-Syntax von LIKE sieht in etwa so aus...

Code:
.. LIKE '%suche%' ...
Weiterhin fehlt die Verbindung zwischen den beiden Tabelle (JOIN)

z.B. vielleicht so ähnlich,

Code:
.. FROM bearbeiter b 
   JOIN student s 
      ON s.idGruppen = b.idGruppen
 WHERE ...


Grüße
Thomas

Geändert von thomas_w (03.03.2010 um 13:08 Uhr).
  Mit Zitat antworten
Alt 03.03.2010, 13:55  
Neuer Benutzer
 
Registriert seit: 03.03.2010
Beiträge: 3
PHP-Kenntnisse:
Anfänger
clamber befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Der SQL ist an der fett markierten Stelle meiner Meinung nach falsch bzw. macht nicht das was Du erwartest. Die SQL-Syntax von LIKE sieht in etwa so aus...


Code:
.. LIKE '%suche%' ...
Stimmt. Habe es bei einer einfachen Abfrage über eine Tabelle mal ausprobiert. Hier funktionieren allerdings beide Versionen, mit und Ohne des Zeichens %.

Zitat:
Weiterhin fehlt die Verbindung zwischen den beiden Tabelle (JOIN)
Die Frage ist, was ich überhaupt auf Gleichheit überprüfen soll?
Hier mal der Auszug aus meinem DB-Modell:



Da ich in den Grundzügen nur in der Tabelle Bearbeiter Datensätze habe, verstehe ich nicht, warum ein EQUAL notwenidig ist/wäre?
clamber ist offline   Mit Zitat antworten
Alt 03.03.2010, 14:54  
thomas_w
Gast
 
Beiträge: n/a
Standard

Zum Thema JOIN geht das ist jetzt in Richtung Grundsatzfrage. Wenn mehr als eine Tabelle in einer SQL-Abfrage verwendet wird ..siehe:

Code:
FROM bearbeiter b, student s
dann müssen diese beiden Tabellen über eine Tabellen-Spalte (zumeist eine ID) miteinander verbindungen werden (Relation oder JOIN) , sonst erzeugt die Datenbank ein Kreuzprodukt und eventuell eine gigantische Datenmenge. Also muss in die SQL-Abfrage irgendwo ein JOIN sein.

Vermutlich also so...

Code:
.. FROM bearbeiter b 
   JOIN student s 
      ON s.idGruppen = b.idGruppen
oder so..

Code:
.. FROM bearbeiter b, student s 
   WHERE s.idGruppen = b.idGruppen
..
Grüße
Thomas
  Mit Zitat antworten
Alt 03.03.2010, 15:25  
Neuer Benutzer
 
Registriert seit: 03.03.2010
Beiträge: 3
PHP-Kenntnisse:
Anfänger
clamber befindet sich auf einem aufstrebenden Ast
Standard

Die Join Abfragen sind kein Problem. Ich habe das Problem jetzt gelöst, indem ich mein Datenmodel mal umgebaut habe, so ist es auch Sinnvoller und einfacher zu verarbeiten:



Und hier nun mein Code dazu:

PHP-Code:
$sql "SELECT *
            FROM benutzer b left join student s
            ON b.idBenutzer = s.idBenutzer
            WHERE Passwort = '$passw'
            AND ( Anmelden = '$userlogin' OR idMatrikelnummer='$userlogin')"

Nun läuft auch alles. Trotzdem besten Dank für die Hilfe und Tipps.

Gruß
Clamber
clamber ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Abfrage über zwei Tabellen Daylen Datenbanken 8 18.12.2009 14:07
MySQL Abfrage über 5 Tabellen evtl. IF ghost120 Datenbanken 11 13.04.2009 20:00
Select Box dynamische Abfrage und ausgabe in case abi PHP Tipps 2008 17 23.09.2008 18:08
[Erledigt] Select über zwei Tabellen / Performanceproblem Wolla Datenbanken 20 15.06.2008 00:58
Mysql Abfrage über zwei Tabellen mit SUM und Count abyss Datenbanken 2 12.06.2008 22:19
Abfrage über 3 Tabellen madSoul Datenbanken 5 26.06.2006 12:25
Select über zwei Tabellen danix-dj PHP Tipps 2006 11 22.05.2006 15:13
Select über 2 Tabellen MasterMind Datenbanken 11 08.04.2006 11:43
Select über mehrere tabellen Sclot Datenbanken 14 24.11.2005 16:56
Mysql Abfrage über 3 Tabellen in Verbidung mit COUNT() Datenbanken 8 29.06.2005 04:15
Mysql Abfrage über 3 Tabellen in Verbidung mit COUNT() PHP Tipps 2005-2 4 28.06.2005 07:47
Abfrage über 3 Tabellen Datenbanken 3 20.09.2004 08:08
Abfrage über 2 Tabellen / Join agrajag Datenbanken 2 14.09.2004 23:05
Abfrage über 3 Tabellen PHP Tipps 2004 3 31.07.2004 22:34
[Erledigt] Join für Select Count(`id`)-Abfrage über 4 Tabellen Datenbanken 4 10.07.2004 18:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
heidisql query feld fehlt, heidisql fremdschlüssel, http://www.php.de/datenbanken/65320-erledigt-select-abfrage-ueber-2-tabellen-bringt-keine-ausgabe.html, studenten ausgaben tabelle, sql select 2 tabellen, selectabfrage sql 2008 aus 2 tabellen, php select abfrage von 2 tabellen, fremdschlüssel heidisql, hiedisql abfrage, select abfrage auf zwei tabellen, heidisql abfragen, select * von zwei tabellen, php abfrage aus 2 tabellen, heidi sql leeres ergebnis zeile ausgeben, userameldung php 2 tabellen, mysql zwei tabellen auf identität prüfen, wie mache ich eine query in heidisql, sql keine ausgabe, sql tabelle student, select abfrage aus meheren tabellen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:53 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum