• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

SELECT Problem

Lightstorm

New member
Hi,

wieso kann ich per SELECT Befehl einen Datensatz aus einer MySQL Tabelle nicht anhand des Passwort oder Namen in der Tabelle anzeigen lassen sondern nur über die id?
PHP:
<?php
		//Datenbankverbindung herstellen
		include "sql.inc.php";
		
		
                        //das was in der Tabelle gesucht werden soll
			$pass	=	"222";
		
                        //MySQL Befehl
			$query		=		"SELECT ".
			 "* ".
			 "FROM ".
			 	"gamer ".
			 "WHERE ".
			 "(passwort = '".$pass."')";
			
			
			$result		=		mysql_query($query);
			
						
			$datensatz		=		mysql_fetch_assoc($result);
			
	 	        //Jetzt sollte dar Datensatz ausgewählt sein wo passwort 222 ist und daraus der Eintrag email angezeigt werden.
			echo $datensatz[email];
		
?>

Es wird aber nichts angezeigt.

Wenn ich aber nach der id suche dann wird der gemeinte Datensatz ausgewählt und daraus der Eintrag email angezeigt, so:
PHP:
<?php
		
		include "sql.inc.php";
		
		
			//$wert	=	"WHERE passwort = ' " . $HTTP_POST_VARS[passwort] . "  ' ";
			
			//echo $wert;

			$id	=	"2";
		
			$query		=		"SELECT ".
			 "* ".
			 "FROM ".
			 	"gamer ".
			 "WHERE ".
			 "(id = '".$id."')";
			
			
			$result		=		mysql_query($query);
			
						
			$datensatz		=		mysql_fetch_assoc($result);
					
			echo $datensatz[email];
		
?>


Wie soll ich aber ein Login machen wo ich vom Login Fomular nur Benutzernamen und Passwort über HTTP_POST_VARS[variable] bekomme?
Ohne die ID kann ich mit dem obigen Code den Eintrag nicht finden und daher auch nicht mit eingegebene Name und Passwort vergleichen.
 
$PW = '222';
$Querry = "SELECT * FROM gamer WHERE passwort = '$PW'";
$Result = mysql_query($Query);

Falls die Spalte <passwort> in der Tabelle <gamer> definiert ist, muss das so gehen.
(Gross- KLeinschreibung der Namen beachten).
 
Es will einfach nicht funktionieren:

PHP:
<?php
		
		include "sql.inc.php";
		
						
			$PW = 'haus';
			$Querry = "SELECT * FROM gamer WHERE passwort = '$PW'";
			$Result = mysql_query($Query);
			
			if ( ! $Result )
			{
				mysql_error(Result);
				die;
			}
						
			$datensatz		=		mysql_fetch_assoc($result);
					
			echo $datensatz[spielername];
		
?>

Bekomme diese Fehlermeldung:
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\game\profil.php on line 16

Das Feld passwort in der Datenbank gamer hat den Typ varchar(20) und die Kollation "latin1_swedish_ci", Null ist nicht erlaubt, der Rest ist leer.
 
Zuletzt bearbeitet:
du baust die eine Abfrage auf und nennst diese $Querry...
die Abfrage die du dann sendest heißt aber $Query

das funst nicht ;)
und gewöhne dir bitte eine einheitliche schreibweise der Variablen an, du kommst sonst irgendwann selbst durcheinander, normalerweise schreibt man alle php-Variablen klein und nur Konstanten groß (so mach ich es zumindest)
 
Geht immer noch nicht :(
Jetzt kommt keine Fehlermeldung mehr sondern das übliche leere weiße Fenster, statt das die Array $datensatz[spielername] ausgegeben wird.

PHP:
<?php
        
        include "sql.inc.php";
        
                        
            $pw = 'haus';
            $query = "SELECT * FROM gamer WHERE passwort = '$pw'";
            $result = mysql_query($query);
            
            if ( ! $result )
            {
                mysql_error($result);
                die;
            }
                        
            $datensatz        =        mysql_fetch_assoc($result);
                    
            echo $datensatz[spielername];
        
?>
 
Zuletzt bearbeitet:
verwende mal var_dump() dann siehst du wie die Rückgabe von mysql_fetch_assoc aussieht:
PHP:
$datensatz = mysql_fetch_assoc($result);
var_dump($datensatz);
 
verwende mal var_dump() dann siehst du wie die Rückgabe von mysql_fetch_assoc aussieht:
PHP:
$datensatz = mysql_fetch_assoc($result);
var_dump($datensatz);
Es wird "bool(false)" angezeigt.

Was bedeutet das genau, das der gewünschte Eintrag in der Array nicht gefunden wurde?

Edit:
Wenn ich wieder anhand der id den Datensatz ermitteln will funktioniert es wunderbar:
PHP:
<?php
        
        include "sql.inc.php";
        
                        
            $pw = '1';
            $query = "SELECT * FROM gamer WHERE id = '$pw'";
            $result = mysql_query($query);
            
            if ( ! $result )
            {
                mysql_error($result);
                die;
            }
                        
            $datensatz        =        mysql_fetch_assoc($result);
           
			                    
            echo $datensatz[email];

Spielername wird angezeigt.
Wieso geht das ganze mit passwort nicht hmm.
 
Zuletzt bearbeitet:
Hier gehören Anführungszeichen hin:
PHP:
echo $datensatz["email"];
 
Gut gesehen aber es will einfach nicht, bekomme weiterhin leere Fenster und bool(false) gemeldet.

Edit: Wenn ich den Primärschlüssel auf das Feld Passwort setze statt auf id funktioniert die Abfrage mit dem passwort.
Aber als Anfänger habe ich keine ahnung ob das so richtig ist (?).
 
Zuletzt bearbeitet:
Habe das Problem jetzt gefunden:
Wenn ich die Feldeinträge mit phpMyAdmin durchführe kann ich anhand des passwort ein Datensatz auswählen, Primärschlüssel ist auf id gesetzt.

Wenn ich es aber über mein php Script eintrage kann ich über passwort die Datensätze nicht anzeigen:

PHP:
<?php
                        //SQL Verbindung aufbauen
			include "sql.inc.php";
		
		        //Variablen festlegen
			$spielername	=	$HTTP_POST_VARS[spielername];
			$email			=	$HTTP_POST_VARS[email];
			$passwort		=	$HTTP_POST_VARS[passwort];
			$rot			=	0;
			$grun			=	0;
			$blau			=	0;
			
                        //query Eintrag
			$query		=		"INSERT INTO gamer2 (spielername, passwort, email, rot, grun, blau) VALUES ('  $spielername  ',' $passwort ',' $email  ',' $rot ',' $grun ',' $blau ')";
			$result		=		mysql_query($query);
		
?>

Als Tabelle ist gamer2 angegeben, das ist die zweite Tabelle die ich erstellt habe, ist also richtig so.
 
Leere Seite deuted darauf hin dass das die ausgeführt wird. Das du keine Fehlermeldung bekommst, liegt daran das mysql_error() keine Ausgabe macht, sondern einen String (mit dem du nichts tust) zurück gibt.

Fehlerausgabe kannst du so recht einfach machen:
PHP:
... mysql_query(..) or die(mysql_error());
 
Wollte eigentlich erst grundlegende Sachen hinbekommen bevor ich mich mit der Sicherheit beschäftige.
Du hälst Sicherheit nicht für eine grundlegende Sache?
Vor allem wirst du, wenn du dein Skript so weiter programmierst, hinterher einen Riesenauswand haben es halbwegs sicher zu machen.

EDIT: übrigens der Fehler den du hier hast, wäre dir ebenfalls nicht passiert, wenn du die Variabeln mit den entsprechenden Methoden bearbeitet hättest.
 
Zurück
Oben