MySql Datenbank Problem

ja hab ich… code:

$db = @new mysqli (‘localhost’, ‘root’, ‘’, ‘uebung’);
if (mysqli_connect_errno() ) {
die ('Konnte keine Verbindung zu Datenbank aufbauen, MySQL meldet: '.mysqli_connect_error() );

dies zeigt auch keine fehler an.

Wieso hast du in der $db = @new mysqli (‘localhost’, ‘root’, ‘’, ‘uebung’);

Ein leeres ‘’ stehen??

du nutzt einmal die mysqli klasse und dann die eingebauten mysql funktionen.
Das sind denke ich zwei unterschiedliche Dinge
mysql_select_db() brauchst du nicht, da die Datenbank bereits bei “new mysqli()” als vierter Parameter angegeben wurde.

@kerbination:
leeres passwort = xampp hat standardmäßig kein passwort vegeben.

Aso^^ okay.

Ja, der vierte Para ist ja schon die Datenbank.

Jo und wichtig ist, dass du eine Datenbank angelegt hast die “uebung” heißt, und auch sichergehts, dass es eine Datenbank ist und nicht etwa eine Tabelle (sowas verwechseln viele Anfänger gerne mal)

@ Balmung:
wenn ich die zeile raus nehme bekomm ich
die nächsten fehler dann erkennt es “benutzer” & "password"
nicht… kann ich evtl mal bissi mehr von mei code schreiben das ihr ihn bissi seht?!
die neuen fehler sind:
Notice: Undefined index: benutzer
Notice: Undefined index: password

und habe meine datenbank “uebung” genannt und die tabelle “login”.

ja schreib ruhig mehr von deinem code, wäre hilfreich.

<?php
session_start();
?>
html zeug...
<?php
error_reporting(E_ALL);          
ini_set('display_errors', 1);

$db = @new mysqli ('localhost', 'root', '', 'uebung');
 if (mysqli_connect_errno() ) {
	die ('Konnte keine Verbindung zu Datenbank aufbauen, MySQL meldet: '.mysqli_connect_error() );
	}
	
$benutzer = $_POST['benutzer'];
$password = md5($_POST['password']);

$sql = 'SELECT 
           benutzer,
           password
         FROM
           login
         WHERE
	    benutzer LIKE "$benutzer" LIMIT 1';

$ergebnis = mysql_query($sql); 
$row = mysql_fetch_object($ergebnis);

if ($row[2] == $benutzer && $row[4] == $password)
	{
	$_SESSION['benutzer'] = $benutzer;
	echo " <p> Sie werden eingeloggt! </p> ";
	}
		else
		{
		echo 'Benutzername und/oder Passwort waren falsch.';
		}

?>

so sieht er im moment aus. hoffe ihr versteht meine logik :p

Die Notice-Meldungen sind von der Einstellung des error_reporting abhängig. Bei dir ist es für die Entwicklung eingestellt, also wird so gut wie alles angezeigt, darunter auch “Hinweise”, nicht nur Warnungen und Fehler.

Bedeutet also nichts anderes, als dass keine Variablen per POST übergeben wurden auf die also auch nicht zugegriffen werden kann weil sie nicht existieren.

Hierfür müsstest du vor der Zuweisung überprüfen ob diese Daten überhaupt übergeben wurden (z.B. if(isset($_POST[‘benutzer’]) && isset($_POST[‘password’])) )

Weiters ist noch ein Fehler in der SQL-Abfrage:
$sql = ‘SELECT
benutzer,
password
FROM
login
WHERE
benutzer LIKE “’.$benutzer.’” LIMIT 1’;

vielen dank scho mal
aber einen fehler hab ich immer noch.
wenn ich des prüfe, muss ich dann dieser
isset zeile noch was anfügen oder einfach
die eine zeile schreiben?!

Ich habs mal für dich eingesetzt :wink:

<?php
session_start();
?>
html zeug...
<?php
error_reporting(E_ALL);         
ini_set('display_errors', 1);

if(isset($_POST['benutzer']) && isset($_POST['password'])){

$db = @new mysqli ('localhost', 'root', '', 'uebung');
if (mysqli_connect_errno() ) {
   die ('Konnte keine Verbindung zu Datenbank aufbauen, MySQL meldet: '.mysqli_connect_error() );
   }
   
$benutzer = $_POST['benutzer'];
$password = md5($_POST['password']);

$sql = 'SELECT
           benutzer,
           password
         FROM
           login
         WHERE
       benutzer LIKE "$benutzer" LIMIT 1';

$ergebnis = mysql_query($sql);
$row = mysql_fetch_object($ergebnis);

if ($row[2] == $benutzer && $row[4] == $password)
   {
   $_SESSION['benutzer'] = $benutzer;
   echo " <p> Sie werden eingeloggt! </p> ";
   }
      else
      {
      echo 'Benutzername und/oder Passwort waren falsch.';
      }
}else{
echo "Variablen fehlen";
}

?>

ok jetzt gehts wenn ich jetzt mein passwort und meinen benutzer
eingebe dann kommt die nächste fehlermeldung… :cry:
des wird wohl nie etwas…
hier der neue fehler falls mir überhaupt noch jemand helfen will…

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource

danke nochmal @ all
für die schnell hilfe und so…

Nimm mal den Code, und sag uns was er ausspuckt:

<?php
session_start();
?>
html zeug...
<?php
error_reporting(E_ALL);         
ini_set('display_errors', 1);

if(isset($_POST['benutzer']) && isset($_POST['password'])){

$db = @new mysqli ('localhost', 'root', '', 'uebung');
if (mysqli_connect_errno() ) {
   die ('Konnte keine Verbindung zu Datenbank aufbauen, MySQL meldet: '.mysqli_connect_error() );
   }
   
$benutzer = $_POST['benutzer'];
$password = md5($_POST['password']);

$sql = 'SELECT
           benutzer,
           password
         FROM
           login
         WHERE
       benutzer LIKE "$benutzer" LIMIT 1';

$ergebnis = mysql_query($sql);
if($ergebnis){
$row = mysql_fetch_object($ergebnis);

if ($row[2] == $benutzer && $row[4] == $password)
   {
   $_SESSION['benutzer'] = $benutzer;
   echo " <p> Sie werden eingeloggt! </p> ";
   }
      else
      {
      echo 'Benutzername und/oder Passwort waren falsch.';
      }
}else{
echo "Datenbankfehler: ".$db->error;
echo "<br />\nSQL: ".$sql;
}
}else{
echo "Variablen fehlen";
}

?>

wenn ich es neu lade kommt zu erst:
"Variablen fehlen"
und wenn ich trotzdem password und benutzer angebe kommt:
"Datenbankfehler:
SQL: SELECT benutzer, password FROM login WHERE benutzer LIKE “$benutzer” LIMIT 1 "

hilft euch das etwas?!
hätte mir vll ein einfacheres thema suchen sollen.
vielen herzlichen dank euch allen!

Ja, das hilft!

PHP gibt das $-Zeichen innerhalb eines Strings aus, statt eine Variable einzusetrzen, wenn der String mit ’ begrenzt ist.

Also nimm mal den Code:

<?php
session_start();
?>
html zeug...
<?php
error_reporting(E_ALL);         
ini_set('display_errors', 1);

if(isset($_POST['benutzer']) && isset($_POST['password'])){

$db = @new mysqli ('localhost', 'root', '', 'uebung');
if (mysqli_connect_errno() ) {
   die ('Konnte keine Verbindung zu Datenbank aufbauen, MySQL meldet: '.mysqli_connect_error() );
   }
   
$benutzer = $_POST['benutzer'];
$password = md5($_POST['password']);

$sql = "SELECT
           benutzer,
           password
         FROM
           login
         WHERE
       benutzer LIKE ".mysql_real_escape_string($benutzer)." LIMIT 1";

$ergebnis = mysql_query($sql);
if($ergebnis){
if(mysql_num_rows($ergebnis) > 0){
$row = mysql_fetch_object($ergebnis);

if ($row[2] == $benutzer && $row[4] == $password)
   {
   $_SESSION['benutzer'] = $benutzer;
   echo " <p> Sie werden eingeloggt! </p> ";
   }
      else
      {
      echo 'Benutzername und/oder Passwort waren falsch.';
      }
}else{
echo "Ungültiger Benutzername";
}
}else{
echo "Datenbankfehler: ".mysqli_error();
echo "<br />\nSQL: ".$sql;
}
}else{
echo "Variablen fehlen";
}

?>

Ich würde die Kontrolle des Passworts ebenfalls in die SQL-Abfrage packen, dann kannst du dir die ganze Vergleicherei mittels PHP ersparen.
Wenn dann aus der Abfrage 1 Zeile kommt, dann stimmen Benutzer und Passwort.

Die Methode kenne ich noch nicht, und ehrlich gesagt bin ich nicht gut genug in SQL, um mir den Code vorstellen zu können.
Hast du vllt ein simples Beispiel?

Ich meinte das so:

$sql = "SELECT ´benutzer´, ´password´ FROM ´login´ WHERE ´benutzer´='".mysql_real_escape_string($benutzer)."' AND ´password´='".mysql_real_escape_string($password)."' LIMIT 1";
Man könnte natürlich auch gleich die MD5-Funktion von MySQL nutzen, dann erspart man sich auch noch das “kopieren” von Variablen.

$sql = "SELECT ´benutzer´, ´password´ FROM ´login´ WHERE ´benutzer´='".mysql_real_escape_string($_POST['benutzer'])."' AND ´password´=MD5('".mysql_real_escape_string($_POST['password'])."') LIMIT 1";
Und weiter mit:

$ergebnis = mysql_query($sql); if(@mysql_num_rows($ergebnis)==1) { $_SESSION['benutzer'] = $_POST['benutzer']; } else { echo 'Benutzername und/oder Passwort waren falsch.'; }

ok wenn ich des von euch beiden hernehmen und es zusammen füge,
gehts glaub ich endlich :slight_smile:
es zeigt zwar an

„Benutzername und/oder Passwort waren falsch“

aber daran ist ja jetzt der code nicht mehr schuld oder?!
oh man vielen herzlichen dank… ohne euch hätt ich das
nie geschafft… vielen dank :hail:
tanja

Wenn du meinst, das richtige Passwort angegeben zu haben, hast du jetzt wsl 2mal md5() :wink:

Versuchs mal nur mit meinem Code.