Datenbank eweitern
Hi,
ich komme mit etwas nicht weiter undzwar habe ich eine Datenbank erstellt, welche die Atribute |UserID, Vorname, Nachname, Passwort, Username| hat.
In Userid, Vorname und Nachname steht was drinne und in passwort und Username nichts (NULL).
Jetzt will ich die ersten drei buchstaben von den Vornamen und Nachnamen nehmen und per Updatebefehl in den Usernamen einfügen
Beispiel: UserID VName NName Passwort Username
... Hans Mustermann ... MusHan
Dies habe ich so gelösst aber funktioniert jedoch noch nicht.
Ich hoffe jemand kann mir da weiter helfen
MfG
Sapzero
ich komme mit etwas nicht weiter undzwar habe ich eine Datenbank erstellt, welche die Atribute |UserID, Vorname, Nachname, Passwort, Username| hat.
In Userid, Vorname und Nachname steht was drinne und in passwort und Username nichts (NULL).
Jetzt will ich die ersten drei buchstaben von den Vornamen und Nachnamen nehmen und per Updatebefehl in den Usernamen einfügen
Beispiel: UserID VName NName Passwort Username
... Hans Mustermann ... MusHan
Dies habe ich so gelösst aber funktioniert jedoch noch nicht.
$user = mysql_query("SELECT UserID, concat(left(3,Nname),left(3,Vname)) AS Username FROM tbluser WHERE Username = NULL");
echo mysql_error();
$a = mysql_fetch_assoc($user);
$a["Username"];
echo "-----".$a["Username"]."-------";
while($a = mysql_fetch_assoc($user))
{
$b = $a["Username"];
mysql_query("UPDATE tbluser SET Username = $b WHERE UserID = ");
}
Ich hoffe jemand kann mir da weiter helfen
MfG
Sapzero
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 109305
Url: https://administrator.de/contentid/109305
Ausgedruckt am: 14.11.2024 um 09:11 Uhr
12 Kommentare
Neuester Kommentar
Hi,
ich würde es mal so probieren:
Natürlich ungetestet....
Grüße,
Dani
ich würde es mal so probieren:
<?php
$sql="SELECT UserID, concat(left(3,Nname),left(3,Vname)) AS Username FROM tbluser WHERE Username = NULL;";
$result = mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error());
$row=mysql_fetch_object($result);
echo "-----".$row->Username."-------";
$sql="UPDATE tbluser SET Username = ".$row->Username." WHERE UserID = ".$row->UserID.";";
mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error());
?>
Grüße,
Dani
Hallo,
die Konstruktion " AS Username [...] WHERE Username [...]" ist eher unglücklich. Nimm "AS Kuerzel". Weiterhin habe ich die PHP-Evalulationsregeln nicht mehr klar im Gedächtnis, aber ich vermute mal, in "mysql_query("UPDATE tbluser SET Username = $b WHERE [...]" wertet er $b nicht aus, also liebe "mysql_query("UPDATE tbluser SET Username = "+$b+" WHERE[...]". Und es ist immer sehr empfehlenswert, bei einer WHERE-Klausel auch einen entsprechend qualifizierenden Wert mit anzugeben, also "WHERE UserID = " + $a["UserID"]. Und ganz großartig ist es auch, wenn man nicht einfach postet "funktioniert jedoch noch nicht" sondern beschreibt, worin sich der Fehler äußert, und was man zu seiner Feststellung schon alles unternommen hat.
Gruß
Filipp
die Konstruktion " AS Username [...] WHERE Username [...]" ist eher unglücklich. Nimm "AS Kuerzel". Weiterhin habe ich die PHP-Evalulationsregeln nicht mehr klar im Gedächtnis, aber ich vermute mal, in "mysql_query("UPDATE tbluser SET Username = $b WHERE [...]" wertet er $b nicht aus, also liebe "mysql_query("UPDATE tbluser SET Username = "+$b+" WHERE[...]". Und es ist immer sehr empfehlenswert, bei einer WHERE-Klausel auch einen entsprechend qualifizierenden Wert mit anzugeben, also "WHERE UserID = " + $a["UserID"]. Und ganz großartig ist es auch, wenn man nicht einfach postet "funktioniert jedoch noch nicht" sondern beschreibt, worin sich der Fehler äußert, und was man zu seiner Feststellung schon alles unternommen hat.
Gruß
Filipp
Dann mach das ganze doch mal "Zeilenweise":
$sql="SELECT UserID, concat(left(3,Nname),left(3,Vname)) AS Username FROM tbluser WHERE Username = NULL;";
$result = mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error());
while($row=mysql_fetch_object($result)) {
$updateSQL = "UPDATE tbluser SET Username='$row->Username' WHERE UserID = $row->UserID";
if(mysql_query($updateSQL))
echo " Success: UserID: $row->UserID | Username: $row->Username <br />"
else
echo "Fehler bei UserID: $row->UserID | Username: $row->Username <br />;
}
$sql="SELECT UserID, concat(left(3,Nname),left(3,Vname)) AS Username FROM tbluser WHERE Username = NULL;";
$result = mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error());
while($row=mysql_fetch_object($result)) {
$updateSQL = "UPDATE tbluser SET Username='$row->Username' WHERE UserID = $row->UserID";
if(mysql_query($updateSQL))
echo " Success: UserID: $row->UserID | Username: $row->Username <br />"
else
echo "Fehler bei UserID: $row->UserID | Username: $row->Username <br />;
}
Hi,
probier es mal so:
Falls immer noch nichts ausgegeben worden ist, füge noch ein "echo $sql" hinzu und nimm diesen Befehl und führe ihn direkt im phpMyAdmin aus.
Grüße,
Dani
probier es mal so:
<?php
$sql="SELECT UserID, concat(left(3,Nname),left(3,Vname)) AS Nick FROM tbluser WHERE Username = 'NULL';";
$result = mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error());
$row=mysql_fetch_object($result);
echo "-----".$row->Nick."-------";
Grüße,
Dani
Hallo,
ja, das kann sein. Vergleiche mit den herkömmlichen Vergleichsoperatoren auf NULL sind immer etwas schwierig (auch wenn sie Zugelassen sind, http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html). Ersetzte "= NULL" durch "IS NULL". Und stell vorher nochmal sicher, dass das Feld tatsächlich den Wert Null hat und nicht ein leerer String ist. Zumindest ist die Ursache, wenn die While-Schleife nicht betreten, dass kein Ergebnis in $result ist.
In phpMyAdmin kann man auch SQL-Querys direkt gegen die DB fahren und damit sowas einfach austesten.
Gruß
Filipp
ja, das kann sein. Vergleiche mit den herkömmlichen Vergleichsoperatoren auf NULL sind immer etwas schwierig (auch wenn sie Zugelassen sind, http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html). Ersetzte "= NULL" durch "IS NULL". Und stell vorher nochmal sicher, dass das Feld tatsächlich den Wert Null hat und nicht ein leerer String ist. Zumindest ist die Ursache, wenn die While-Schleife nicht betreten, dass kein Ergebnis in $result ist.
In phpMyAdmin kann man auch SQL-Querys direkt gegen die DB fahren und damit sowas einfach austesten.
Gruß
Filipp