You are not logged in.

  • Login

1

Saturday, September 1st 2007, 12:12am

Kein result mit mysqli

Hi!

Ich frage die Datenbank foldendermaßen ab:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
$stmt = mysqli_prepare($sql, "SELECT password, rang FROM user WHERE name = ?;");
mysqli_stmt_bind_param($stmt, "s", $_POST["name"]);
mysqli_stmt_bind_result($stmt, $user["password"], $user["rang"]);
mysqli_stmt_fetch($stmt);
dump($user);
if (md5($_POST["password"]) == $user["password"]) {
	die("login erfolgreich");
} else {
	die("login fehlgeschlagen");
}


Dabei erhalte ich als Ergebnis aber nur:

Source code

1
2
3
4
5
6
7
8
array(2) {
  ["password"]=>
  &NULL
  ["rang"]=>
  ∫(0)
}

login fehlgeschlagen


Ich weiss aber absolut nicht, warum ich keine brachbaren Ergebnisse im Array $user habe. Vielleicht ist es auch schon einfach zu spät...

Für nen heissten Tipp wäre ich dankbar!

Gruß,
Max123

2

Saturday, September 1st 2007, 12:18am

Da es schon spät ist, wie du schon richtig erkannt hast, würde ich die traditionelle methode des debuggens vorschlagen :)
Einfach mal einen standard SELECT machen und schauen was raus kommt ohne schnickschnack, dann alles step by step hinzufügen und du wirst den Fehler bis auf die Zeile genau eingrenzen können :)

Try&Error

so long

4

Saturday, September 1st 2007, 10:40am

*Brett vorm Kopf wegnehm*
Ja, nach einer guten Runde Schlaf habe ich das grad auch gemerkt. Aber danke! :D

Ich wollte auch mal eine Datenbankklasse schreiben, wo ich die mysqli Funktionen verwende, damit man vor SQL Injection geschützt ist und die Anwendung aber immer noch einfach ist.
Aber ich komme atm damit nicht zurecht, dass man eine variable Menge an Parametern z.B. bei mysqli_bind_param() braucht.

5

Saturday, September 1st 2007, 12:18pm

Was willst du denn eigentlich erweitern? MySQLi steht dir ja gleichzeitig als Klasse und als Funktion zur Verfügung.

PHP Quellcode

1
2
3
4
//$sql = mysqli_connect('localhost', 'my_user', 'my_password', 'world');
$stmt = mysqli_prepare($sql, "SELECT password, rang FROM user WHERE name = ?;");
mysqli_stmt_bind_param($stmt, "s", $_POST["name"]);
mysqli_stmt_bind_result($stmt, $user["password"], $user["rang"]);


PHP Quellcode

1
2
3
4
//$sql = new mysqli('localhost', 'my_user', 'my_password', 'world');
$stmt = $mysqli->prepare("SELECT password, rang FROM user WHERE name = ?;");
$stmt->bind_param("s", $_POST["name"]);
$stmt->bind_result($user["password"], $user["rang"]);


Wenn du bind_param nicht gerade verändern magst, leitest du sie einfach ab ohne sie zu verändern.

Im manual gibts auch bereits ein paar abgeleitete Exemplare.

Similar threads

Social bookmarks