Problem beim anlegen von einem Datensatz

Pilleslife
Hallo,

ich habe ein PHP MySQL Problem. Und zwar legt folgendes Script nicht, wie eigentlich gedacht einen neuen Eintrag in der Tabelle an.

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
<?php 
include ("includes/config.inc.php");

// Aufbau der Datenbankverbindung 
$connectionid  mysql_connect ($mysql_server$mysql_benutzer$mysql_pw); 
if (!mysql_select_db ($mysql_db$connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 

//Benutzerdaten bereitstellen
$value["Nickname"]=$_POST["Name"];
$value["Kennwort"]=$_POST["pw"];
$value["eMail"]=$_POST["email"];
// Daten eintragen 
  // SQL-Anweisung erstellen 
  $sql "INSERT INTO ".
    "benutzerdaten (Nickname, Kennwort, e-Mail) ".
  "VALUES ('".$value["Nickname"]."', '".
                       md5 ($value["Kennwort"])."', '".
                       $value["eMail"]."')"; 
  mysql_query ($sql); 
  $num mysql_affected_rows();
  if ($num>0)
  { 
    echo "Benutzer erfolgreich angelegt."; 
  } 
  else
  {
      echo"Fehler. Benutzer wurde nicht angelget.";
    }
?> 


Als Antwort bekomme ich "Benutzer erfolgreich angelegt.".

Zum test hab ich mir auch mal die Variablen, bzw. Arrays $value["Nickname"], $_POST["Name"], $value["Kennwort"], $_POST["pw"],
$value["eMail"], $_POST["email"]
ausgeben lassen. Der Wert ist in Ordnung nur werden die Daten nicht in die DB geschrieben. Woran liegt das?

Danke im Vorraus
Winbug
zwischen INSERT und VALUE stimmt email nicht ueberein. Ueberpruefe wie die spalte in der tabelle heist und passe es dementsprechend an.
Dizzy.w3
Hi Pilleslife,

anfänglich möchte ich sagen, dass immer ein MySQL_Error
php:
1:
mysql_error()

eingebaut werden sollte, wenn man mit MySQL arbeitet.

Wenn du die Ausgabe »Benutzer erfolgreich angelegt« beokmmst, müssten auch Zeilen eingetragen werden, denn
php:
1:
mysql_affected_rows()


liefert einen größeren Wert als 0 zurück.

Sofern die Tabelle existiert und die Felder wirklich

  • Nickname
  • Kennwort
  • e-Mail


heißen.

Müsste es funktionieren.

Ich bin mir bloß nicht sicher, ob man den Absatz so schreiben kann
php:
1:
2:
3:
4:
if (!mysql_select_db ($mysql_db$connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
}


Ich hab's eben kurz umgeschrieben, sollte nun funktionieren.

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
<?php

include ("includes/config.inc.php");

// Aufbau der Datenbankverbindung 
$connectionid  mysql_connect($mysql_server$mysql_benutzer$mysql_pw);
echo mysql_errno() . ": " mysql_error(). "\n";

if (!mysql_select_db($mysql_db$connectionid)) 
{
  die ("Keine Verbindung zur Datenbank"); 
} 

//Benutzerdaten bereitstellen
$nickname $_POST["Name"];
$kennwort $_POST["pw"];
$email $_POST["email"];
// Daten eintragen 
      // SQL-Anweisung erstellen 
    $sql "insert into benutzerdaten (Nickname, Kennwort, e-Mail) values('" $nickname "','" md5($kennwort) . "','" $email "')";
  mysql_query ($sql); 
  $num mysql_affected_rows();
  if ($num>0)
  { 
    echo "Benutzer erfolgreich angelegt."; 
  } 
  else
  {
      echo"Fehler. Benutzer wurde nicht angelget.";
  }
?>


Gruß
Dizzy
Pilleslife
Erst einmal danke für eure Beiträge. Die Spaltennamen sind richtig und die Tablle "benutzerdaten" existiert. Jetzt bekomme ich aber folgende Fehlermeldung: "0: Fehler. Benutzer wurde nicht angelget."
Dizzy.w3
Hi,

hab meinen obrigen Beitrag eben bearbeitet.

Gruß
Dizzy

Edit: Nimm dir nochmal den letzten PHP-Absatz.
Pilleslife
Schade. Geht immer noch nicht. Immer noch die Meldung: "0: Fehler. Benutzer wurde nicht angelget."

EDIT: So es funktioniert jetzt. Danke für eure Hilfe großes Grinsen

Gibt es noch eine Möglichkeit zu überprüfen, ob der Benutzername schon existiert? Ich in das Script noch etwas erweitert:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
<?php

include ("includes/config.inc.php");

// Aufbau der Datenbankverbindung 
$connectionid  mysql_connect($mysql_server$mysql_benutzer$mysql_pw);
echo mysql_errno() . ": " mysql_error(). "\n";

if (!mysql_select_db($mysql_db$connectionid)) 
{
  die ("Keine Verbindung zur Datenbank"); 
} 

//Benutzerdaten bereitstellen
$nickname $_POST["Name"];
$kennwort $_POST["pw"];
$email $_POST["email"];

//Prüfen ob Benutzername bereits vergeben ist
$sql1="SELECT `Nickname` FROM `benutzerdaten` WHERE `Nickname` LIKE \ '".$nickname."' LIMIT 0, 30 '";
$res=mysql_query ($sql1); 
  $num mysql_num_rows($res);
  if ($num>0)
  { 
    echo "Der Benutzername existiert bereits.\n";
    echo "Bitte wählen Sie einen anderen Nicknamen.";
  echo "<a href='index.php?link=register'>Zurück</a>"; 
  exit;
  } 
  
// Daten eintragen 
      // SQL-Anweisung erstellen 
    $sql "insert into benutzerdaten (Nickname, Kennwort, eMail) values('" $nickname "','" md5($kennwort) . "','" $email "')";
  mysql_query ($sql); 
  $num mysql_affected_rows();
  if ($num>0)
  { 
    echo "Benutzer erfolgreich angelegt.";
    echo "Sie können sich nun mit ihren Benutzerdaten einloggen.";
  echo "<a href='index.php'>Weiter</a>"; 
  } 
  else
  {
      echo"Fehler. Benutzer wurde nicht angelget.";
  }
?>


Leider bekomme ich aber folgende Fehlermeldung: "Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /srv/www/vhosts/mobileboard24.de/subdomains/pupilwar/httpdocs/register2.php
on line 22"
Dizzy.w3
Woran lag's?
Pilleslife
Lag daran, dass ich in der Tabelle noch die Spalten Vor und Nachname hatte und beide auf "not null". Jetzt habe ich aber noch ein anderes kleines Problem (Beitrag obendrüber).
HForum
Hoi,

php:
1:
$sql1="SELECT `Nickname` FROM `benutzerdaten` WHERE `Nickname` LIKE \ '".$nickname."' LIMIT 0, 30 '";


Für was ist da der Backslash? Hab ich eine Funktion verschwitzt? Willst du was escapen? Mach den mal weg und versuchs nochmal großes Grinsen .

Gruss
Pilleslife
Der Backslash komm daher, da ich die Funktion aus PHPmyAdmin gereniet habe. Aber auch ohne Backslash geht es nicht. Immer noch folgende Fehlermeldung: "0:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /srv/www/vhosts/mobileboard24.de/subdomains/pupilwar/httpdocs/register2.php
on line 22
Benutzer erfolgreich angelegt.Sie k&#65533;nnen sich nun mit ihren Benutzerdaten einloggen.Weiter"
Maniac_81
php:
1:
2:
//Prüfen ob Benutzername bereits vergeben ist
$sql1="SELECT `Nickname` FROM `benutzerdaten` WHERE `Nickname` LIKE '".$nickname."' LIMIT 0, 30 ";


am ende dieser zeile war ein ' zuviel oder eins zuwenig.nach LIMIT 0, 30 und vor dem " ist in deinem ein alleingelassenes '
Pilleslife
Danke das war der Fehler. Was so ein kleines "Hochkomma" ausmacht großes Grinsen
Maniac_81
jepp, das ist das A und O bei PHP & MySQL. mann schaut 5 mal drüber über das script und den fehler merkt man nicht....