php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.08.2004, 22:02  
Gast
 
Beiträge: n/a
Standard Vergleich von Usereingabe und Inhalten der DB

Hallo Leute!!

Ich weiss... Ihr werdet mich bestimmt gleich auslachen, aber ich bekomme das einfach nicht hin

Ich möchte gerne Daten aus der DB mit den Daten, die ein User in ein Formular eingeben soll vergleichen.

Der User muss hier einfach nur sein Passwort eingeben. Die Eingabe muss dann ja mit den Daten in der DB abgeglichen werden. Aber so wie ich es versuche geht das einfach nicht.

Und nicht lachen bitte, ich bin halt ganz am Anfang


<?
$verbindung = mysql_connect("localhost","benutzer","pass") or die ("Keine Verbindung möglich");
mysql_select_db("DB") or die ("Datenbank existiert nicht");

$pass = $HTTP_POST_VARS["passwort"]; //Eingabe des Users

$abfrage = "SELECT passwort FROM testing"; //Daten aus der DB
$ergebnis = mysql_query($abfrage);
if ($pass == $ergebnis)
{
echo "HALLO";
}
else
{
echo "GoodBye";
}
mysql_free_result($ergebnis);
mysql_close($verbindung);
?>
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.08.2004, 22:16  
Gast
 
Beiträge: n/a
Standard

1. Hier wird niemand ausgelacht!

2. Dein Problem ist vielmehr auf PHP-Basis.

3. Zum Problem:

Du hast bis jetzt nur den Befehl für die Abfrage in der Variabeln gespeichert, die Abfrage aber nicht ausgeführt. Dir fehlt noch dass du das Passwort eines bestimmten Users abfrägst also am Ende noch z.B: "WHERE `id` = 1".

Wie du dann die Abfrage an mysql sendest und das Ergebniss auswertest kannst du hier nachlesen: http://tut.php-q.net/mysql-query.html

Wenn du dann noch Fragen hast schrei eben wieder
  Mit Zitat antworten
Alt 26.08.2004, 22:54  
Gast
 
Beiträge: n/a
Standard

So, ich habe meinen Code dann jetzt so aufgebaut. Bekomme dann aber immer die folgende Fehlermeldung:

Konnte die MySQL-Abfrage nicht verarbeiten
MySQL-Antwort:You have an error in your SQL syntax near '1' at line 1

Was mache ich noch falsch? Verstehe nämlich nicht genau was er mit der Meldung meint.


<?
$verbindung = mysql_connect("localhost","benutzer","pass") or die ("Keine Verbindung möglich");
mysql_select_db("DB") or die ("Datenbank existiert nicht");

$pass = $HTTP_POST_VARS["passwort"];

$result = mysql_query("SELECT passwort FROM testing WHERE id 1");
if($pass == $result) { // prüfen auf false
echo "Konnte die MySQL-Abfrage nicht verarbeiten
\n";
echo "MySQL-Antwort:".mysql_error();
die();
}
else
{
echo "GoodBye";
}
mysql_close($verbindung);
?>

Ist es denn falsch das ich if ($pass == $result) mache? Irgendwie muss doch die Eingabe des Users mit den Daten in der DB verglichen werden?!
  Mit Zitat antworten
Alt 26.08.2004, 22:57  
Gast
 
Beiträge: n/a
Standard

Hast den Vergleichsoperator vergessen:

Code:
$result = mysql_query("SELECT passwort FROM testing WHERE id = 1");
Wenn du PHP-Code postest benutze bitte den BB-PHP oder CODE-Tag. Die Buttons sind über der Box zum Text schreiben.
  Mit Zitat antworten
Alt 26.08.2004, 23:06  
Gast
 
Beiträge: n/a
Standard

Hmmm, ja danke werde ich machen. Wusste nicht das es so geht mit dem code anzeigen

Aber wieso muss ich denn nicht if ($pass == $result) machen ???
Ich muss doch irgendwie die Eingabe des Users mit den Daten in der DB vergleichen?!?!?

Der code sieht jetzt so aus, funzt aber net. Auch nicht wenn ich if (!result) durch if ($pass == $result) ersetze.

Code:
<? 
$verbindung = mysql_connect("localhost","benutzer","pass") or die ("Keine Verbindung möglich"); 
mysql_select_db("DB") or die ("Datenbank existiert nicht");

$pass = $HTTP_POST_VARS["passwort"];

$result = mysql_query("SELECT passwort FROM testing WHERE id = 1");
if(!$result) { // prüfen auf false        
echo "Konnte die MySQL-Abfrage nicht verarbeiten 
\n";        
echo "MySQL-Antwort:".mysql_error();        
die();
}
else
{
echo "GoodBye";
}
mysql_close($verbindung);
?>
Aber irgendwie ist das so oder so komisch. Es werden ja nur die "Unwahren" ausgegeben. Eine true gibt es ja gar nicht. Also kann doch so auch gar kein wahres Ergebnis ausgegeben werden. Oder irre mich da? Ich bin hier bestimmt total auf dem Holzweg und check mal wieder nichts
  Mit Zitat antworten
Alt 27.08.2004, 08:36  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Du hast zwar deine Abfrage abgeschickt (mysql_query()), die Daten aber immer noch nict abgeholt (z.B. mysql_fetch_array()). In $result hast du keineswegs das Passwort, sondern nur "den Weg dazu". Grundsätzlich gilt bei allen DB-Operationen: Die Meldungen von mysql_error() sind im allgemeinen aussagekräftiger, als eigene Meldungen. Das Ganze könnte dann etwa so aussehen:
PHP-Code:
$verbindung mysql_connect("localhost","benutzer","pass") or die (mysql_error());
mysql_select_db("DB") or die (mysql_error());

$pass $_POST["passwort"];

$sql "SELECT passwort FROM testing WHERE id = 1";
$result mysql_query($sql) or die(mysql_error());
$obj mysql_fetch_object($result);
if (
$obj->passwort == $pass)
{
     echo 
"Passwort ist ok
"
;
}
else
{
     echo 
"Passwort ist falsch
"
;
}
mysql_close($verbindung); 
So ganz nebenbei würde ich dir empfehlen, das Passwort nicht im Klartext in der DB abspeichern, sondern mit md5(), password() oder encrypt() verschlüsselt. Da könnte der Abfrage-Teil dann z.B. so aussehen
PHP-Code:
...
$sql "SELECT passwort FROM testing 
    WHERE id = 1
    AND passwort = md5($pass)"
;
$result mysql_query($sql) or die(mysql_error());
if (
$mysql_num_rows($result) == 1)
{
     echo 
"Passwort ist ok
"
;
}
else
{
     echo 
"Passwort ist falsch
"
;
}
... 
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 29.08.2004, 10:16  
Gast
 
Beiträge: n/a
Standard

Hey Danke
Damit konnte ich jetzt endlich auch was anfangen!
Naja irgendwann lerne ich das wohl auch noch
Danke nochmal euch beiden !!!
  Mit Zitat antworten
Alt 29.08.2004, 10:36  
Gast
 
Beiträge: n/a
Standard

Aber eine Frage hätte ich noch...
Wie interpretiere ich denn den Pfeil im folgenden?

Code:
if ($obj->passwort == $pass)
  Mit Zitat antworten
Alt 29.08.2004, 11:33  
Erfahrener Benutzer
 
Registriert seit: 17.08.2004
Beiträge: 213
carrib befindet sich auf einem aufstrebenden Ast
Standard

Hi!

Die Zeilen eines MySQL Abfrageergebnis können mittels der Funktionen mysql_fetch_array(), mysql_fetch_row(), mysql_fetch_assoc(), oder mysql_fetch_object() extrahiert werden.

mysql_fetch_row liefert Dir ein durchnummeriertes Array
mysql_fetch_assoc liefert Dir ein assoziatives Array
mysql_fetch_array liefert Dir ein assoziatives und durchnummeriertes Array (das Ergebnis entspricht der Kombination von mysql_fetch_row und mysql_fetch_assoc)
mysql_fetch_object liefert Dir ein Objekt, dessen Eigenschaften den Feldnamen entsprechen

Auf die Eigenschaft eines Objekts kann per $objekt->eigenschaft zugegriffen werden.
lazydog hat diese Schreibweise verwendet, da er den Datensatz mit mysql_fetch_object holt.

Infos über das Arbeiten mit Objekten findest Du im PHP Manual.
carrib ist offline   Mit Zitat antworten
Alt 29.08.2004, 20:38  
Gast
 
Beiträge: n/a
Standard

Okay soweit habe ich es verstanden, (DANKE) aber bei folgendem code überprüft er immer nur den ersten Eintrag in der db Tabelle. Dort bekomme ich entweder richtig oder falsch ausgegeben. Aber gebe ich zum Beispiel einen anderen Benutzernamen und dessen Passwort ein, bekomme ich immer passwort falsch ausgegeben

Code:
........connect........db_select............

$pass = $_POST["passwort"];
$name = $_POST["name"];

$sql = "SELECT passwort, vorname FROM testing"; 
$result = mysql_query($sql) or die(mysql_error()); 
$obj = mysql_fetch_object($result); 
if ($obj->passwort == $pass && $obj->vorname == $name) 
{ 
     echo "Passwort ist ok
"; 
} 
else 
{ 
     echo "Passwort ist falsch
"; 
} 
mysql_close($verbindung); 
?>
Woran liegt das? In der db stehen ja nicht nur ein Name und Passwort. Er muss doch sämtliche Namen überprüfen und schauen ob Name und Passwort übereinstimmen. Dies geschieht allerdings nur beim obersten Eintrag.

Danke
  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
php und perl im vergleich Off-Topic Diskussionen 17 05.03.2009 19:13
Schleifen-Problem beim Vergleich von 2 Arrays Slappi PHP Tipps 2008 3 15.06.2008 19:30
Seite mit dynamischen und festen Inhalten erstellen errox PHP Tipps 2008 2 04.11.2007 14:01
von seite.php inhalten aus seitexy.php übernehmen PHP Tipps 2008 14 04.10.2007 13:02
select mit inhalten aus mehreren Tabellen wurtzel Datenbanken 6 02.12.2006 17:37
Nach Inhalten einer Tabelle suchen PHP Tipps 2006 3 08.03.2006 12:01
Abfrage und vergleich aus 2 Datenbanken Unkaputtbar2 PHP Tipps 2006 4 09.02.2006 12:41
Abfrage und vergleich aus 2 Datenbanken Unkaputtbar2 Datenbanken 2 09.02.2006 12:10
Falscher vergleich: mein PHP denkt unlogisch udn falsch Blank PHP Tipps 2005-2 3 28.07.2005 19:13
Shopsysteme Vergleich Beitragsarchiv 0 18.07.2005 12:10
Abfrage Vergleich zweier Tabellen MortakArtos Datenbanken 2 22.02.2005 16:02
Vergleich in einer .csv Datei PHP Tipps 2005 18 22.01.2005 19:07
ANzeigen von Dateien oder Inhalten flual2000 PHP Tipps 2004-2 1 08.11.2004 12:31
Problem mit Vergleich JeeZ PHP Tipps 2004 6 28.09.2004 17:27
Vergleich, ob ein Datum mit Uhrzeit vor anderem liegt PHP-Fortgeschrittene 2 14.09.2004 15:27

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
dateneingabe vergleich mit datensätzen php, select abfrage mit eingabe in datenbank vergleichen, php usereingabe mit sql abfrage vergleichen, php eingabe sql abfrage vergleichen, php eingabe mit db vergleichen, vergleich db php vorhanden, select from db und vergleich php, mysql php abfrage mit usereingaben vergleichen, mysql php abfrage mit usereongaben vergleichen, php vergleichen mit db, datenbank mit eingabe vergleichen, php if else mit usereingabe, mysql php eingabe vergleichen mit db, php usereingabe, vergleich datenbank if(, vergleiche machen aus der datenbank php, php vergleich eingabe datei, \perl vergleich\, eingabe, db vergleich php, php select abfrage mit usereingabe

Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.