Problem beim anlegen von einem Datensatz |
Pilleslife
Mitglied
Dabei seit: 22.04.06
Beiträge: 446
Forenversion: 2.3; 2.1
|
|
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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Pilleslife: 31.07.07 15:34.
|
|
31.07.07 15:33 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Winbug
Mitglied
Dabei seit: 17.01.04
Beiträge: 194
Fähigkeiten: WBB3 Anfänger; WBB2 Profi; WBB Lite 1 Anfänger Herkunft: Copperas Cove Texas USA Forenversion: 3.0; 2.3
|
|
zwischen INSERT und VALUE stimmt email nicht ueberein. Ueberpruefe wie die spalte in der tabelle heist und passe es dementsprechend an.
|
|
31.07.07 16:02 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Dizzy.w3
Brain Damage
Dabei seit: 18.07.07
Beiträge: 1.431
Herkunft: Österreich Forenversion: 3.0
|
|
Hi Pilleslife,
anfänglich möchte ich sagen, dass immer ein 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
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
__________________ Gruß Dizzy
the rest is silence
Dieser Beitrag wurde 6 mal editiert, zum letzten Mal von Dizzy.w3: 31.07.07 16:33.
|
|
31.07.07 16:16 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Pilleslife
Mitglied
Dabei seit: 22.04.06
Beiträge: 446
Forenversion: 2.3; 2.1
Themenstarter
|
|
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
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"
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Pilleslife: 31.07.07 17:45.
|
|
31.07.07 16:47 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
HForum
Mitglied
Dabei seit: 28.01.05
Beiträge: 361
Herkunft: Schweiz - St. Gallen Forenversion: Lite 1.0
|
|
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
.
Gruss
__________________ (\ /)
( . .)
C('')('')
|
|
01.08.07 11:19 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Pilleslife
Mitglied
Dabei seit: 22.04.06
Beiträge: 446
Forenversion: 2.3; 2.1
Themenstarter
|
|
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�nnen sich nun mit ihren Benutzerdaten einloggen.Weiter"
|
|
01.08.07 12:09 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
|