PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Probleme mit Abfrage (http://www.selfphp.de/forum/showthread.php?t=7912)

Corvin 09.06.2004 18:59:04

Probleme mit Abfrage
 
Bei diesem Script:

PHP-Code:

<?php 
session_start 
(); 
include(
"db.php");

$sql "SELECT "
    
"nickname, rang, vorname, nachname, geburtstag, homepage, email, icq"
  
"FROM "
    
"benutzerdaten "
  
"WHERE "
    
"(Nickname like '".$_REQUEST["name"]."') AND "
    
"(Kennwort = '".$_REQUEST["pwd"]."')"
$result mysql_query ($sql); 

if (
mysql_num_rows ($result) > 0

  
$data mysql_fetch_array ($result);  
  
$_SESSION["user_rang"] = $data["rang"];
  
$_SESSION["user_nickname"] = $data["Nickname"]; 
  
$_SESSION["user_nachname"] = $data["Nachname"]; 
  
$_SESSION["user_vorname"] = $data["Vorname"];
  
$_SESSION["user_geburtstag"] = $data["geburtstag"]; 
  
$_SESSION["user_email"] = $data["email"]; 
  
$_SESSION["user_homepage"] = $data["homepage"]; 
  
$_SESSION["user_icq"] = $data["icq"]; 
  
  
header ("Location: intern.php"); 

else 

  
header ("Location: formular.php"); 

?>

erhalte ich diese Fehlermeldung:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/web293/html/tutorial-scripte/newsscript/login.php on line 14

Warning: Cannot modify header information - headers already sent by (output started at /home/www/web293/html/tutorial-scripte/newsscript/login.php:14) in /home/www/web293/html/tutorial-scripte/newsscript/login.php on line 30

Woran liegt das? Was habe ich falsch gemacht?

meikel (†) 09.06.2004 19:54:00

Re: Probleme mit Abfrage
 
Zitat:

Original geschrieben von Corvin Gröning
Woran liegt das? Was habe ich falsch gemacht?
Zwischen icq und FROM fehlt ein Leerzeichen. Deshalb ist $result nicht gültig, mysql_num_rows wirft einen Fehler und header funktioniert wegen der Fehlermeldung nicht, weil sie schon Content ist.

Corvin 09.06.2004 20:11:20

Danke, das klappt! Nun habe ich das nächste Problem, eigentlich sollte er ja die Sessionvariablen zuweisen und dann auf intern.php umleiten, dies tut er aber nicht, sondern leitet wieder auf formular.php um, obwohl user und passwort richtig eingegeben wurde.

Marilu 10.06.2004 09:17:10

Bei Deiner Abfrage können mehr als 1 Datensatz zurückgegeben werden -> LIMIT 1 anhängen.

Was gibt denn mysql_num_rows($result) zurück? Füge mal ein:
$rows = mysql_num_rows($result);
echo $rows; // nur zur Prüfung; danach geht header() nicht mehr

Corvin 10.06.2004 12:53:16

Es wird 1 zurückgegeben.

Marilu 10.06.2004 13:57:23

Dann lege mal ein echo vor:
header ("Location: intern.php");

... um zu sehen, ob er dahin kommt. Wenn ja, auch direkt hinter die Zeile, um das Problem einzugrenzen.

Corvin 10.06.2004 14:02:11

Vielen Dank für den Tipp! Ich habe mittles dieser Methode jetzt das Problem gefunden. Es war in der in intern.php eingebunden Datei ein Fehler mit der Umleitung.

chris17 10.06.2004 14:04:44

Hi Corvin,

die Verrenkungen mit den Anführungszeichen " beim SQL-String brauchst Du nicht.

Obacht, Du sprichst Feldnamen, wie z.B. "nickname", klein- und grossgeschrieben an! (Auch bei der Zuweisung der Sessionvariablen -> $data['feldname']...)

Als Vergleichsoperator benutzt Du "=" und "LIKE". "LIKE" benutzt man eigentlich im Zusammenhang mit den Platzhalterzeichen "%" und "_".

Die Klammern in der WHERE-Klausel solltest Du nochmal überdenken...
Code:

$sql = "SELECT
          nickname, kennwort, rang, vorname, nachname, geburtstag, homepage, email, icq
      FROM
          benutzerdaten
      WHERE
          (Nickname like '".$_REQUEST["name"]."')
      AND 
          (Kennwort = '".$_REQUEST["pwd"]."')
      ";

Gruss

chris17


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:21:56 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.