Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Datenbank eweitern

Frage Entwicklung Datenbanken

Mitglied: Sapzero

Sapzero (Level 1) - Jetzt verbinden

17.02.2009, aktualisiert 19.02.2009, 3322 Aufrufe, 12 Kommentare

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.
01.
$user = mysql_query("SELECT UserID, concat(left(3,Nname),left(3,Vname)) AS Username FROM tbluser WHERE Username = NULL"); 
02.
echo mysql_error(); 
03.
$a =  mysql_fetch_assoc($user); 
04.
        $a["Username"]; 
05.
echo "-----".$a["Username"]."-------"; 
06.
	 
07.
	while($a =  mysql_fetch_assoc($user)) 
08.
09.
		$b = $a["Username"]; 
10.
		mysql_query("UPDATE tbluser SET Username = $b WHERE UserID = "); 
11.
	}	
Ich hoffe jemand kann mir da weiter helfen

MfG
Sapzero
Mitglied: Dani
17.02.2009 um 22:20 Uhr
Hi,
ich würde es mal so probieren:
01.
<?php 
02.
 
03.
$sql="SELECT UserID, concat(left(3,Nname),left(3,Vname)) AS Username FROM tbluser WHERE Username = NULL;"; 
04.
$result = mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error()); 
05.
$row=mysql_fetch_object($result); 
06.
 
07.
echo "-----".$row->Username."-------"; 
08.
 
09.
$sql="UPDATE tbluser SET Username = ".$row->Username." WHERE UserID = ".$row->UserID.";"; 
10.
mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error()); 
11.
?>
Natürlich ungetestet....


Grüße,
Dani
Bitte warten ..
Mitglied: filippg
17.02.2009 um 22:59 Uhr
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
Bitte warten ..
Mitglied: Sapzero
17.02.2009 um 23:01 Uhr
Danke für deine Antwort.
Ich habs Probiert da kommt dann das hier

------------Fehler bei der SQL Abfrage:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE UserID =' at line 1

Wo könnte den der Fehler liegen?
Bitte warten ..
Mitglied: Sapzero
17.02.2009 um 23:04 Uhr
Ich habe schon vieles probiert jedoch liegt nicht das Problem daran das ein Fehler auftaucht. Das Problem ist das es nichts macht und die Tabelle nicht verändert wird und wie gesagt es auch kein fehler anzeigt.
Bitte warten ..
Mitglied: Dani
17.02.2009 um 23:09 Uhr
Ah...folgende Zeile:
01.
02.
$sql="UPDATE tbluser SET Username = '".$row->Username."' WHERE UserID = '".$row->UserID."';"; 
03.
mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error()); 
Bitte warten ..
Mitglied: Sapzero
17.02.2009 um 23:18 Uhr
Ja der Fehler ist weg doch der macht immer noch nicht das was ich will in Username steht immer noch NULL.
Eigentlich macht er genau das wie von meinem Quellcode. Aber ich glaube schon sehr nah an der richtigen Lösung dran wo könnte wohl der fehler liegen?
Bitte warten ..
Mitglied: Sapzero
17.02.2009 um 23:21 Uhr
01.
<?php 
02.
 
03.
$sql="SELECT UserID, concat(left(3,Nname),left(3,Vname)) AS Username FROM tbluser WHERE Username = NULL;"; 
04.
$result = mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error()); 
05.
$row=mysql_fetch_object($result); 
06.
 
07.
echo "-----".$row->Username."-------";
er müsste doch hier schon bei echo "-----".$row->Username."-------"; etwas ausgeben, jedoch tut er dies net kann der Fehler vllt dann im SELECt liegen????
Bitte warten ..
Mitglied: godlie
18.02.2009 um 07:32 Uhr
Dann mach das ganze doch mal "Zeilenweise":

<code>
$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 />;
}
Bitte warten ..
Mitglied: Sapzero
18.02.2009 um 17:20 Uhr
Ich hab das mal versucht aber es klappt net. Ich hab bemerkt das er garnicht in die while schleife kommt es muss also schon vorher ein Fehler liegen. Wenn ich in die while schleife eine einfache Ausgabe mache, wie echo "hallo"; gibt er nichts aus also kann nur schon vorher der Fehler liegen.
Bitte warten ..
Mitglied: Dani
18.02.2009 um 19:02 Uhr
Hi,
probier es mal so:
01.
<?php 
02.
 
03.
$sql="SELECT UserID, concat(left(3,Nname),left(3,Vname)) AS Nick FROM tbluser WHERE Username = 'NULL';"; 
04.
$result = mysql_query($sql) OR die ("Fehler bei der SQL Abfrage:<br/ >" . mysql_error()); 
05.
$row=mysql_fetch_object($result); 
06.
 
07.
echo "-----".$row->Nick."-------";
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
Bitte warten ..
Mitglied: filippg
18.02.2009 um 19:25 Uhr
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
Bitte warten ..
Mitglied: Sapzero
19.02.2009 um 15:24 Uhr
Hi,
vielen Dank. Es funktioniert nun. Es lag zum einem am = NULL und da war noch ein fehler im concat.

01.
// Falsch 
02.
$sql="SELECT UserID, concat(left(3,Nname),left(3,Vname)) AS Nick FROM tbluser WHERE Username = 'NULL';"; 
03.
 
04.
//Richtig 
05.
$sql="SELECT UserID, concat(left(Nname,3),left(Vname,3)) AS Nick FROM tbluser WHERE Username is NULL;";
MfG
Sapzero
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Exchange Server
Exchange 2007 Datenbank restore ohne Exchange zu verändern - SBS2008

Frage von pitamerica zum Thema Exchange Server ...

Datenbanken
Datenbank API Automation

Link von Frank zum Thema Datenbanken ...

Festplatten, SSD, Raid
Vergleich zweier SSD-Typen im Raid-10 für den Anwendungsfall SQL-Datenbank (8)

Frage von DerWoWusste zum Thema Festplatten, SSD, Raid ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...