[PHP] Nach Eintrag suchen

larsclever

Vms2 Neuling
ID: 346446
L
29 März 2009
95
11
Hallo,
ich bin gerade dabei mir ein Login + Registrationsskript für meine Hp zu basteln.
Nun will ich checken ob der User schon in der Datenbank vorhanden ist, das will ich hiermit machen:

PHP:
$sql = "SELECT Nickname FROM benutzerdaten WHERE Nickname=$benutzer[0]["Nickname"]";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
    if ($count == 1)
    {
    $page = "Dieser Benutzer existiert bereits. Bitte wählen sie einen
anderen Benutzernamen.";
   echo $page;
    }
    else
    {
    echo "Nicht gefunden";
    }
Doch ich bekomme diesen Fehler :

Parse error: parse error in C:\xampp\htdocs\test\login\creat.php on line 19

zur Hilfe , in dem Phpcode der oben gelistet ist, ist die 1. Zeile die 19. Zeile.

Gruß Lars
 
Zuletzt bearbeitet von einem Moderator:
Du siehst doch schon am Syntaxhighlighting hier im Forum, dass dein Code Kauderwelsch is ;)

Du schließt das Anführungzeichen und danach kommt direkt "Nickname". Das versteht der Parser nicht. Entweder setzt du dort ein Semikolon (Anweisungsende) oder einen Punkt (Konkatenation). Syntaxtisch zumindest.

Solltest du das Dollarzeichen für Variablenzugriff meinen, darfst du das nicht in Anführungszeichen verwenden. Bei einfachen Variablen geht das, aber bei komplexem Arrayzugriff nicht (außer bei geschweifter Klammerung des ganzes Ausdrucks).

Tipp: Verwende Notepad2. Das hat eingebautes Syntaxhighlighting und du siehst solche Fehler schon beim Codeschreiben.
 
Also das Dollarzeichen ist für die Variable, da ich noch ein Php Noob bin, Frage: wie würde der Code richtig aussehen?

Grüßi Larsi
 
Kommt drauf an, was der Code heißen soll.

Die Query sieht so aus, als ob du mit einem Feld vergleichen willst. Das is aber unlogisch. Der PHP-Teil sieht nach einem String-Vergleich aus.
Ich weiß nicht, was du willst.

PHP:
$sql = 'SELECT Nickname FROM benutzerdaten WHERE Nickname='.$benutzer[0]['Nickname'];
PHP:
$sql = 'SELECT Nickname FROM benutzerdaten WHERE Nickname=\''.$benutzer[0]['Nickname'].'\'';
PHP:
$sql = "SELECT Nickname FROM benutzerdaten WHERE Nickname={$benutzer[0]['Nickname']}";
PHP:
$sql = "SELECT Nickname FROM benutzerdaten WHERE Nickname='{$benutzer[0]['Nickname']}'";
macht alles Sinn. Zwei Schreibweisen sind jeweils äquivalent. Das mit der geschweiten Klammer würd ich vermeiden, weils unübersichtlich is.

Eine Bemerkung, die ich mir nicht verkneifen kann: Du bist dir sicher, ein solches Script schreiben zu wollen, wenn du noch nicht mal die Syntax der Sprache kannst? :roll:
Nur weil ich 5 Wörter Japanisch kann, zieh ich auch nicht gleich nach Tokio um, oder?

edit:
Ne andere Frage: Wieso rufst du den Nickname ab, wenn du ihn gar nicht auswertest? Dein Hoster wirds dir danken, wenn du die Datenbank irgendwas fragst, was du gar nicht wissen willst.
 
hi

PHP:
$sql = 'SELECT Nickname FROM benutzerdaten WHERE Nickname='.$benutzer[0]["Nickname"].'';

wäre eine richtig Lösung

edit: grml wollte den Code noch eben zu Sicherheit testen :ugly: (blamiere mich halt nicht gerne ;)) und dann war tH schneller *g* aber wenigstens noch eine weitere Lösung die tH nicht hat

mfg

chris
 
Zuletzt bearbeitet:
hmm, also ich glaube alles hat keinen Sinn, deswegen poste ich hier mal das komplette Skript.
Info: Ich will ein Login + Regg Skript machen, das Skript kann schon ohne Probleme in die Datenbank posten, aber das blöde ist, man kann so oft wie man will sich mit dem Usernamen anmelden, deswegen versuche ich, zu testen ob :
der User vorhanden ist --> Skript wird beendet
der Username ist noch nicht vergeben --> Skript wird ausgeführt.

Skript:
PHP:
<?php

$benutzer[0]["Nickname"] ="test";
$benutzer[0]["Kennwort"] = "test";
$benutzer[0]["Nachname"] = "test";
$benutzer[0]["Vorname"] = "test";
$benutzer[0]["email"] = "12test";


$connectionid  = mysql_connect ("localhost", "dbuser", "dbuserpw");
if (!mysql_select_db ("db", $connectionid))
{
  die ("Keine Verbindung zur Datenbank");
}

$sql = 'SELECT Nickname FROM benutzerdaten WHERE Nickname=\''.$benutzer[0]['Nickname'].'\''; 
$result = mysql_query($sql);
$count = mysql_num_rows($result);
    if ($count == 1)
    {
    $page = "Dieser Benutzer existiert bereits. Bitte wählen sie einen
anderen Benutzernamen.";
   echo $page;
    }
    else
    {
    echo "Nicht gefunden";
    }


while (list ($key, $value) = each ($benutzer))
{

  $sql = "INSERT INTO ".
    "benutzerdaten (Nickname, Kennwort, Nachname, Vorname, email) ".
  "VALUES ('".$value["Nickname"]."', '".
                       md5 ($value["Kennwort"])."', '".
                       $value["Nachname"]."', '".
                       $value["Vorname"]."', '".
                       $value["email"]."')";
  mysql_query ($sql);

  if (mysql_affected_rows ($connectionid) > 0)
  {
    echo "Benutzer erfolgreich angelegt.<br>\n";
  }
  else
  {
   echo "Fehler beim Anlegen der Benutzer.<br>\n";
  }
}
?>
 
PHP:
<?php 

$benutzer[0]["Nickname"] ="test"; 
$benutzer[0]["Kennwort"] = "test"; 
$benutzer[0]["Nachname"] = "test"; 
$benutzer[0]["Vorname"] = "test"; 
$benutzer[0]["email"] = "12test"; 


$connectionid  = mysql_connect ("localhost", "dbuser", "dbuserpw"); 
if (!mysql_select_db ("db", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

$sql = 'SELECT Nickname FROM benutzerdaten WHERE Nickname='.$benutzer[0]['Nickname']; 
$result = mysql_query($sql); 
$count = mysql_num_rows($result); 
    if ($count == 1) 
    { 
    $page = "Dieser Benutzer existiert bereits. Bitte wählen sie einen 
anderen Benutzernamen."; 
   echo $page; 
    } 
    else 
    {  
    while (list ($key, $value) = each ($benutzer)) 
    { 

      $sql = "INSERT INTO ". 
        "benutzerdaten (Nickname, Kennwort, Nachname, Vorname, email) ". 
      "VALUES ('".$value["Nickname"]."', '". 
                           md5 ($value["Kennwort"])."', '". 
                           $value["Nachname"]."', '". 
                           $value["Vorname"]."', '". 
                           $value["email"]."')"; 
      mysql_query ($sql); 

      if (mysql_affected_rows ($connectionid) > 0) 
      { 
        echo "Benutzer erfolgreich angelegt.<br>\n"; 
      } 
      else 
      { 
       echo "Fehler beim Anlegen der Benutzer.<br>\n"; 
      } 
  } 
} 
?>

Denke so sollte es gehen, aber ist ungetestet...
 
Zuletzt bearbeitet:
Da kommt folgender Fehler:


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\test\login\test.php on line 18
 
Unknown column 'test' in 'where clause'

Das hat mir der Fehlercode gebracht
Sorry, könnte mir jmd. per Icq usw. bitte helfen ?

Grußi Larsi
 
Lesen hilft manchmal :roll:

Kleiner Tipp: Die Spalte "test" existiert nicht in der Tabelle, auf die du zugreifst. Der Fehler wird dadurch verursacht, dass du den Nicknamen nicht in Anführungszeichen maskierst. Dadurch wird das von MySQL als Spaltenname interpretiert und das Ganze wirft einen Fehler. tH hat schon mögliche Lösungen gepostet...

Greetz

paddya