Zwei Abfragen hintereinander aus zwei versch. Tabellen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
abfragen
adresse
anwenden
ausgabe
benutzer
code
dank
datenbank
einschalten
email
erfragen
information
sonntag
status
tabelle
tip
url
verbindung
versenden
-
Hallo,
wie der Titel schon sagt möchte ich zwei MySQL Abfragen hintereinander abfragen, wobei jede eine andere Tabelle in der gleichen Datenbank abfragt.
Kurze Erklärung, um den folgenden Code besser zu verstehen. Ich betreibe eine Seite, auf der man sich anmelden muss. Dort soll es nun einen extra gesicherten Bereich geben. Um den zu betreten braucht der Benutzer einen Sicherheitscode, der ihm als Email zugesendet werden soll. Die zwei Abfragen brauch ich, um in der ersten Abfrage die Email-Adresse zu erfragen, welche in der Tabelle 1 steht. Und in der zweiten Abfrage zu erfragen, wie viele Sicherheitscodes aus Tabelle 2 noch verfügbar sind. Der erste freie Sicherheitscode soll dann in der Email an der den Benutzer gesendet werden. Ok, hier der Code dazu:
include("config.php"); if($connection) { if ($selection) { //Pruefen der eingegebenen Daten $query = "SELECT `Email` FROM `accounts` WHERE `username` = '$user'"; $abfrage = mysql_query($query); $check_user = mysql_num_rows($abfrage); if($check_user == 1) { //Setzen der Email-Adresse, nach erfolgreicher Abfrage $email = $abfrage; mysql_close(); if($connection) { if($selection) { $query2 = "SELECT * FROM `key` WHERE `status` = '0'"; $abfrage2 = mysql_query($query2); if($abfrage2) { while($row = mysql_fetch_assoc($abfrage2)) { echo "$row->['key']<br>"; } } (Hier steht der Code für die Email, den ich jetzt entfernt habe :) ) } else { echo "Keine Datenbank ausgewält."; } }else { echo "Verbindung zur Datenbank nicht möglich."; } } else { echo "Mehrere User markiert."; } }else { echo "Erste Datenbank konnte nicht gefunden werden."; } }else { echo "Verbindung nicht möglich."; } }
An der Datei "config.php" kann es schon mal nicht liegen, weil diese auch bei anderen Seiten funktioniert.
Folgender Code, sollte mir die Abfrageergebnisse anzeigen:
echo "Email: " .$email ."<br>"; echo mysql_num_rows($abfrage2);
Die Anzeige sieht dann aber so aus:
Email: Resource id #4
Ich hoffe, ihr könnt mir weiterhelfen.
Wenn ihr noch weitere Informationen braucht, um zu helfen, sagt bescheid. :)
Danke schonmal,
Robert. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du musst eine der mysql_fetch-Funktionen anwenden, dann sollte das gehen. SQL-Querry gibt Dir nur eine Resoucre zurück.
Zb:
mysql_fetch_row($abfrage2);
Mit nen bissl Suchen findest Du hier bei Lima auch schon die passende Antwort darauf. Schau mal hier der letzte Beitrag von ggame, da sind auch ein paar Links zu diesem Thema.
http://www.lima-city.de/thread/mysql-ausgabe-resource-id-5
Gruß und schönen Sonntag
Marco
-
Danke, für deine Antwort, dir auch einen schönen Sonntag :)
mit mysql_fetch_row($abfrage2); hat es nicht geklappt, dafür bekomme ich nun eine Email-Adresse angezeigt.
$email = mysql_result($abfrage, 0);
Damit hat es geklappt :) , aber jetzt habe ich immer noch das Problem, dass ich keinen Key angezeigt bekomme.
$key = mysql_result($abfrage2, 0); echo $key;
Es wird einfach nichts angezeigt :( Die Ausgabe sieht dann folgendermaßen aus:
Email: ******@******.de
Theoretisch müsste jetzt noch der erste freie Key aus der Abfrage angezeigt werden.
-
Versuch es mal so.
while ($row = mysql_fetch_array ($abfrage2)) { $key = $row[key]; echo $key . "<br>"; }
Wobei Du beachten musst, das
ein reserviertes Wort ist und somit Maskiert werden muss.key
Siehe hier:
https://dev.mysql.com/doc/refman/5.1/de/reserved-words.html
Ich versuche solche Bezeichner immer zu vermeiden um mir den Stress zu ersparen.
Gruß Marco
-
Irgendwie funktioniert der Teil mit der Abfrage der freien Sicherheitscodes immer noch nicht :(
if($connection) { if($selection) { $query2 = "SELECT * FROM `key` WHERE `status` = '0'"; $abfrage2 = mysql_query($query2); if($abfrage2) { while ($row = mysql_fetch_row($abfrage2)) { $code = $row['code']; echo $code ."<br>"; } } //Hier steht das Script zum Email versenden. } else { echo "Keine Datenbank ausgewält."; } }else { echo "Verbindung zur Datenbank nicht möglich."; }
Ich weiß nicht, warum mir nichts angezeigt wird. Es gibt keinen Fehler und keine andere Ausgabe.
Beitrag zuletzt geändert: 23.3.2014 16:57:20 von robert-giebel -
bei lima musst du die fehleranzeige einschalten. das geht so:
<?php error_reporting(E_ALL | E_STRICT); ini_set('display_errors', true);
und zwar wie du sehen kannst, gleich am anfangs der file. -
Danke für den Tipp!!
Endlich funktioniert's! es lag an der while-Schleife statt:
while ($row = mysql_fetch_row($abfrage2)) { $code = $row['code']; echo $code ."<br>"; }
muss dort folgendes stehen:
while ($row = mysql_fetch_array($abfrage2)) { $code = $row['code']; echo $code ."<br>"; }
Also vielen Dank, an euch beide :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage