Auslesen von Daten aus DB?

FingerSkill

Erfahrenes Mitglied
Hi,
ich habe hier folgendes Script:
PHP:
<?
		  $loginname = strip_tags($_POST['loginname']);
          $password  = strip_tags($_POST['password']);
		  
		  if (!filled_out($_POST))
		  {
			  echo 'Du hast das Formular nicht korrekt ausgef&uuml;llt - Bitte geh zur&uuml;ck'
                            . ' und versuche es noch einmal.';
			  exit;
	      }
		  elseif (!check_inputsyntax($loginname))
		  {
			  echo 'Du hast einen Loginnamen mit einer falschen Syntax eingegeben - Bitte geh zur&uuml;ck'
                            . ' und versuche es noch einmal.';
			  exit;
		  }
		  elseif (!check_inputsyntax($password))
		  {
		      echo 'Du hast ein Passwort mit einer falschen Syntax eingegeben - Bitte geh zur&uuml;ck'
                            . ' und versuche es noch einmal.';
			  exit;
		  }
		  
		  // verbindung zur db
		  
		  $db = new mysqli('localhost', '', '', '');
		  if(mysqli_connect_errno())
		  {
		    echo 'Fehler: Verbindung zur Datenbank nicht m&ouml;glich. Versuchen Sie es zu einem sp&auml;teren Zeitpunkt bitte nochmal.'
			   . '<br />'
			   . 'Connect failed: ' . mysqli_connect_error();
			exit;
		  }
		  $query = "SELECT MemberID, LoginName, NickName WHERE LoginName = '$loginname' AND Password = sha1('$password')";
		  $result = $db->query($query);
		  $row = $result->fetch_assoc();
		  echo $row['LoginName'];
          $db->close();
          echo 'test';
          echo $_SESSION['valid_nickname'];
	    ?>

und bekomme folgenden Fehler:
Fatal error: Call to a member function fetch_assoc() on a non-object in /mnt/sda/home/u0006445618/public_html/aca/login_prozess.php5 on line 45

Das Script ist natuerlich noch nicht fertig, aber die Fertigstellung scheitert an diesem Fehler. Und ich hab vieles ausprobiert jedoch half nichts jetzt bitte ich um eure Hilfe.

lg, Fap
 
Naja.. die Fehlermeldung ist doch recht deutlich:

fetch_assoc ist eine Methode, die zu einem Objekt gehört (wohl zu deiner mysql-Klasse) und $result ist eine "einfache" Variable -> kann mit der Objekt-Methode ->fetch_assoc nichts anfangen.

$db->fetch_assoc() scheint mir logischer...
 
Hab ich auch schon ausprobiert aber dann kommt die Fehlermeldung:
Fatal error: Call to undefined method mysqli::fetch_assoc() in /mnt/sda/home/u0006445618/public_html/aca/login_prozess.php5 on line 45
 
dann ist die fetch_assoc Methode wohl nicht definiert.. ;)


1) Code deiner MySQL Klasse durchforsten, da muss es ja was in der Art geben

2) Dein $result beinhaltet ja bereits die Werte ->
Code:
(while $result->mysql_fetch_assoc($result) {

$result[feld1]...

}

Wirf mal einen Blick in ein MySQL-Tutorial/Handbuch...
 
Naja hab ich alles gemacht, das seltsame ist das so ein aehnlicher Code funktioniert den ich in ner anderen Datei habe -->

PHP:
$db = new mysqli('localhost', '', '', '');
            if( mysqli_connect_errno() )
			{
              echo 'Fehler: Verbindung zur Datenbank nicht möglich. Versuchen Sie es zu einem späteren Zeitpunkt bitte nochmal.<br />';
              echo 'Connect failed: '.mysqli_connect_error();
              exit;
            }
			$query = "SELECT MemberID, NickName FROM Members WHERE ActivationCode = '$code'";
			$result = $db->query($query);
			$row = $result->fetch_assoc();
			$memberid = $row['MemberID'];
			if(empty($row['MemberID']))
			{
			  echo "Falscher Aktivierungscode!";
			  exit;
			}
			$query = '
            UPDATE
                    `Members`
              SET
                    `ActivationCode` = "",
                    `Activ`  = "1"
			  WHERE
			        `MemberID`  = "'.$memberid.'"
            ';
			 $result = $db->query($query);
			 echo 'Benutzer: '.$row['NickName'].' mit der ID: '.$memberid.' erfolgreich Aktiviert!'

und ich versteh ned warum er dort funktioniert und bei der anderen Datei nicht.
 
Gibst Du immer Deiner Logindaten zur Datenbank so öffentlich frei, oder sind das
die zum testen auf dem localen Server?
 
Du solltest die Datenbankausgabe in eine Bedingung setzen, da ansonsten "$loginname"
und "$password" zuvor nicht bekannt sind und so eine Fehlermeldung ausgegeben werden könnte
 
Zuletzt bearbeitet:
Zurück