Also ich suche in einer Datenbank immer mit "select" - ich wüsste nicht, dass es einen anderen Befehl dafür gibt.
7Danke
Hi.
Ich habe eine SQL-Datenbank, welche folgend aussieht:
Ich will nun eine Abfrage machen, welche nach einer Mail-Adresse in der DB sucht (z.B. die PHP-Variable $MeineMail) und die dazugehörige BenutzerID ausliest, und in eine Varriable speichert.
Wie müsste Hier der SQL-Querry sein, um die Zeile zu suchen und auszulesen?
bzw. mit SELECT kann ichs ja auswählen, doch wie kann ich genau nach diesem Datensatz suchen?
Danke & LG
Anzeige
Also ich suche in einer Datenbank immer mit "select" - ich wüsste nicht, dass es einen anderen Befehl dafür gibt.
Scha mal hier nach: MySQL-SELECT-Anweisung - Varianten und Möglichkeiten - PHP-Kurs.com - PHP programmieren lernen
Bei Fragen, wieder hier melden.
SELECT Email, BenutzerID
From <Tabellenname>
WHERE Email = $MeineMail;
Statt der Variablen muss da in der SQL Query natürlich die Mailadresse stehen, aber so sieht die Abfrage im Prinzip aus.
Danke, wenn ich
nutze, wo wird dann die ID gespeichert?Code:$sql_command2 = " SELECT Email, UserID From UserData WHERE Email = $email;"; mysqli_query($customer_database , $sql_command2); $summary = $customer_database->prepare($sql_command2); if (!$summary) { die ('Es konnte kein SQL-Query vorbereitet werden: '.$customer_database->error); } else {
Danke & LG
Code:$mysqli = new mysqli("localhost", "my_user", "my_password", "DB"); $sql = "SELECT SELECT Email, UserID FROM UserData WHERE Email = '$email' "; if(!$result = $mysqli->query($sql)) { message_die(GENERAL_ERROR, "'Es konnte kein SQL-Query vorbereitet werden:", "", __LINE__, __FILE__, $sql); } else { while($row = $result->fetch_array()) { $UserID = $row['UserID']; } }
Also mein Querry sieht so aus:
Hier krieg ich folgenden Error:Code:$sql_command2 = " SELECT Email, UserID From UserData WHERE Email = $email;"; mysqli_query($customer_database , $sql_command2); if (!$result = $customer_database->query($sql_command2)) { message_die(GENERAL_ERROR, "'Es konnte kein SQL-Query verarbeitet werden:", "", __LINE__, __FILE__, $sql_command2); } else { while($row = $result->fetch_array()) { $UserID = $row['UserID']; } }
Line85 ist diese:
Fatal error: Call to undefined function message_die() in /home/.sites/127/site693/web/TEST/shop/register.php on line 85so wie ich das sehe, passt doch alles oder?Code:message_die(GENERAL_ERROR, "'Es konnte kein SQL-Query verarbeitet werden:", "", __LINE__, __FILE__, $sql_command2);
Dann ersetze es doch durch deine Version.
Code:die ('Es konnte kein SQL-Query vorbereitet werden: '.$customer_database->error);
WHERE Email = $email;"; <-- was soll das ; vor dem " ???
Zudem muss $email in Hochkomma, da es ein String ist.
Code:WHERE Email = '$email' ";
Nun hab ich noch eine Frage, wie kann ich überprüfen, ob die Email in der Datenbank schon existiert?
Danke & LG
Creamy
Das tust du doch schon mit WHERE Email = '$email' "; Wenn das Result 0 ist, gibt es sie noch nicht.
o.k.
Ich habs jetzt mit
versucht, allerdrings schreit er jetz, auch wenn der Datensatz noch nicht existiert.Code:$sql_command3 = " SELECT Email, UserID From UserData WHERE Email = $email;"; mysqli_query($database , $sql_command3); $result = $database->query($sql_command3); if (!$result != NULL){ echo "Email existiert schon :("; } else { // DO STUFF }
Seht Ihr hier einen Fehler?
Dreamweaver wirft keine Fehlermeldungen aus, auch wenn ich das script starte sieht alles aus wies soll, nur dass er IMMER meckert, egal ob die Adresse vorhanden ist oder nicht...
Hmm, ja .
SQL-Syntax Fehler. Wenn du einen String vergleichst, muss der in Hochkomma. zB:
SELECT einFeld
FROM meineTabelle
WHERE anderesFeld = 'inhalt';
Ob du das Semikolon im mysqli_query weglassen kannst/musst weiss ich nicht mehr....
Dreamweaver? Oh mein Gott.
Das erste Semikolon kommt weg, brauchst du nicht. Sagte aber Jim schon.
Warum "if (!$result != NULL){", was soll das bringen? Also entweder verneinst du das $result, oder du verneinst den Operator. Nicht beides.
Aber eigentlich nicht zusammen. Und noch als wertvoller Tipp: vergiss mal ganz schnell den Vergleich mit NULL. Zähle lieber die Vorkommen! count() ist dein Freund. Dann count($res['email'] >= 1. Schneller machen kannst du das sogar, indem du bereits beim SQL Query zählst, und das Result verwirfst wenn = 0. Denn wenn du mal dynamisch programmieren willst, kannst du ein und dieselbe Abfrage durch Übergabe von Variablen andere Abfragen durchführen lassen, wo durchaus mal 1,2 oder 10000 als Zählwert rauskommen darf. Und das fängst du mit o.g. gar nicht ab. Was machst du zB, wenn du ein Adminmenü hast, und nachsehen willst, ob jemand durchgeschlüpft ist, oder ein Datenbankbackup Duplis erzeugt hat? Indem seine Email zB zweifach vorhanden ist? Oder ein Nutzername existiert, aber ohne Email? Alles schon erlebt und selbst daraus gelerntPHP-Code:!$result // wenn boolscher Wert zB
// oder
$result != NULL //wobei ich das nie nutzen würde.
Nein, daran hats nicht gelegen, jetz hab ich folgendes:
Code:$sql_command3 = " SELECT Email, UserID From UserData WHERE Email = '$email';"; mysqli_query($customer_database , $sql_command3); $result = $customer_database->query($sql_command3); if (!$result != NULL){ echo "Es existiert schon ein Kunde mit der Email-Adresse ".$email."! <a href=\"forget-pw.php\">Passwort vergessen?</a>"; } else { // do stuff }
...und das funktioniert oder das funktioniert nicht?
Lesezeichen