[TYPO3-german] exec_UPDATEquery aktualisiert Datenbank nicht

Christoph Kunze bruce at anjardis.de
Wed Feb 1 08:33:39 CET 2006


Typo3 wählt die Datenbank für dich schon automatisch aus, da musst du 
das also nicht schreiben (darfst du aber, denke ich). In deinem Programm 
musst du das natürlich tun. Entweder gibt es dort eine Möglichkeit, die 
Datenbank auszuwählen oder du musst es halt vor jede Tabelle schreiben, 
was ich weniger glaube. Versuche ansonsten einfach mal in deinem 
Programm als erstes "USE mydb" auszuführen.
Standardmäßig werden Logs für Queries nicht angelegt, das musst du dem 
MySQL schon selber sagen. Am besten eignet sich dafür das Programm 
"MySQL Administrator", das du auf der MySQL-Homepage findest, für 
Abfragen gibt es dort auch den "MySQL Query Browser", kann dir aber 
nicht sagen, ob das was für dich ist, weil ich dein Programm ja nicht 
kenne. Im Administrator kannst du jedenfalls nach dem Verbinden unter 
"Startup Variables->Log files->Query Logfile Name" eine Datei angeben, 
in der alle angekommenen Abfragen gespeichert werden. Etwas verwirrend: 
du musst erst auf das Symbol links neben dem Feld klicken. Danach MySQL 
neu starten (geht auch über das Programm).
ABER die Abfrage KOMMT an, denn du bekommst ja eine "1" zurück. Die 
kommt vom Server, und würde die Abfrage nicht ankommen, könnte er auch 
nix ändern ;) Nunja, aber probiere es aus. Vergiss aber nicht, das 
Logging später wieder zu deaktivieren, wenn du es nicht mehr brauchst.
Habe ich das jetzt richtig verstanden, dass (beinahe) ein und dieselbe 
Abfrage in SQLyog funktioniert, aber nicht von Typo3 aus? Das kann 
wirklich nicht sein. Ich hänge einfach immer noch an dem Punkt, dass du 
diese blöde 1 zurückbekommst. Hast du mal probiert, einfach ein
$db->exec_SELECTquery('password', 'fe_users',$where);
$row = $db->sql_fetch_assoc();
echo $row['password'];
VOR und NACH deinem Update probiert? Dazu natürlich noch die Ausgabe des 
tatsächlich einzutragenden Passwortes. Das muss einfach klappen.
Ist der Code, den du kopiert hast, 1:1 derselbe wie in deinem Fall?
Sonst schick mir einfach deine ganze Typo3-Installation und ich schau 
mir das an *g*.
Naja, viel Glück erstmal weiterhin...


alexhaupt at web.de schrieb:
> danke für die Tipps! :)
> 
> jetzt wird der Hund doch in der Pfanne verrückt. ich dachte ich hätte Deinen anderen Tipp
> schon ausprobiert! wenn ich jetzt die Ausgabe von dem echo
> 
> UPDATE fe_users SET password='2a9310674da51f8bd7a8909f0c533ccf' WHERE uid = 56
> 
> über SQLyog ausführe, bekomme ich verständlicherweise folgende Fehlermeldung:
> 
> No database selected
> 
> da der DB Name vor fe_users fehlt. setze ich stattdesen mydb.fe_users - funktioniert es.
> habe mal spaßes halber folgenden Code ausgeführt:
> 
> 		$db = $GLOBALS['TYPO3_DB'];
> 		db->exec_UPDATEquery('mydb.fe_users',$where,$pwd);
> 
> wieder ohne Erfolg! wo finde ich denn die logs von mysql? kann ich da nicht sehen
> , ob solch eine Abfrage dort überhaupt ankommt?
> 
> schönen Gruß
> Alex
> 
> 
> 
> 
> German Typo3 Userlist <typo3-german at lists.netfielders.de> schrieb am 31.01.06 15:58:46:
> 
> SQLyog kenne ich persönlich jetzt nicht, aber wenn du auch Abfragen 
> damit ausführen kannst, probiere mal folgendes:
> echo $db->UPDATEquery("fe_users","uid=56",$array);
> Die Ausgabe dann mal kopieren und direkt mit deinem Programm ausführen. 
> Das hat dann den Vorteil, dass du auch auf die Schnelle ein bisschen in 
> der Abfrage rumspielen kannst. So wie ich das verstanden habe, hast du 
> es ja bisher nur zum Vergleichen benutzt.
> Ansonsten: Verwechselst du auch nicht fe_users mit be_users? Schaust du 
> mit deinem Programm auch in die richtige Datenbank?
> Hab es selbst schon oft genug erlebt, dass man ewig sucht und es am Ende 
> nur an einer dämlichen Kleinigkeit liegt. Bei sowas sucht man sich tot.
> 
> Im Übrigen würde ich dir nicht empfehlen, eine Variable $array zu 
> nennen. Auch wenn das funktioniert, kann das doch zu Verwirrungen in 
> Bezug auf array() führen. Und um ein paar Mikrosekunden Perfomance 
> rauszuholen, solltest du einfache ('') statt doppelte ("") 
> Anführungszeichen benutzen, wenn du keine Variablen in der Zeichenkette 
> benutzt. Nur als weitere Tips zum Lernen ;)
> 
> alexhaupt at web.de schrieb:
>> Hi Chris,
>>
>> danke für Deine Antwort und Optimismus :)! Ich lerne auch hier nicht aus...vielen
>> Dank für den Tip mit der 1 :)!
>>
>> Leider trifft Deine Vermutung mit der falschen uid nicht zu. ich habe mal folgenden
>> Code ausgeführt:
>>
>> $array = array("password" => "Test");
>> $q = $db->exec_UPDATEquery("fe_users","uid=56",$array);
>> echo $q;
>>
>> bekam wieder eine 1! doch in der Spalte "password" wurde nichts geändert!
>>
>> Die debug Ausgabe gibt mir auch nichts aus. Rufe ich diese nicht so auf:
>> debug($db->exec_UPDATEquery("fe_users","uid=56",$array)); ?
>>
>> ich greife mit SQLyog auf die DB zu und kann so direkt sehen, ob sich etwas getan hat!
>>
>> schönen Gruß
>> Alex
>>
>>
>>
>>
>>
>>
>> German Typo3 Userlist <typo3-german at lists.netfielders.de> schrieb am 31.01.06 14:48:15:
>>
>> Bist du dir 100% sicher, dass es nicht aktualisiert wurde? Auf welchem 
>> Wege hast du das denn herausgefunden? Hast du dir mit phpmyadmin die 
>> Tabelle angeschaut, über phpmyadmin->SQL mal die Abfrage ausgeführt und 
>> noch einmal verglichen? Steht in $new_password wirklich das neue Passwort?
>> Die "1" steht übrigens nicht für true, sondern dafür, dass eine (1) 
>> Zeile geändert wurde, es MUSS also eigentlich geklappt haben. Es wäre 
>> hilfreich, wenn du nicht nur schreibst, dass deine "Debug"-Ausgaben 
>> keine Fehler aufweisen, sondern diese Ausgaben auch gleich mitpostest.
>> Mein größter Verdacht ist einfach, dass das neue Passwort gar kein neues 
>> ist oder die uid eine falsche ist und damit der falsche Benutzer 
>> geändert wird.
>> Wir finden schon eine Lösung,
>> Chris
>>
>> alexhaupt at web.de schrieb:
>>> habe mal versucht statt der Funktion, direkt ein mysql_query ausführen.
>>> da passiert auch nichts.
>>> wenn ich mir über folgende Zeilen
>>>
>>> 		$q = $db->UPDATEquery("fe_users",$where,$array);
>>> 		echo $q;
>>>
>>> die Abfrage anschaue, ist diese auch in Ordnung. ich bekommen über folgende
>>> Zeilen sogar ein True bzw. 1
>>>
>>> 		$q = $db->exec_UPDATEquery("fe_users",$where,$array);
>>> 		echo $q;
>>>
>>> doch die Daten sind trotz des "true"s nicht aktualisiert worde. ich fange gleich
>>> mit dem Stricken an und lass die ganze proggerei sein ;)
>>>
>>> Spaß beiseite, hat jemand eine Erklärung????
>>>
>>> sg Alex
>>>
>>>
>>> German Typo3 Userlist <typo3-german at lists.netfielders.de> schrieb am 31.01.06 09:17:42:
>>>
>>> Habe in der API auch schon rumgewällst. Doch ohne Erfolg.
>>> habe die Variablen auch mal gegen reale Werte ausgetauscht - da passiert auch nichts.
>>> Doch wenn ich mal statt uid - uids eingebe, gibt er mir eine Fehlermeldung aus, dass
>>> die Spalte nicht existiert. So sehe ich, dass doch eine Kommunikation stattfindet.
>>> Aber warum aktualisiert er die Werte nicht, wenn ich alles richtig schreibe????
>>>
>>> wäre nett, wenn mir einer helfen könnte :)! hier nochmal der Code:
>>>
>>> 		$where = "uid=". $userid;
>>> 		$array = array("password" => md5($new_password));
>>> 		
>>> 		$db = $GLOBALS["TYPO3_DB"];
>>> 		$db->exec_UPDATEquery("fe_users",$where,$array);
>>>
>>> schönen Gruß
>>> Alex Haupt
>>>
>>> German Typo3 Userlist <typo3-german at lists.netfielders.de> schrieb am 30.01.06 20:42:54:
>>>
>>>> Etwas "off topic", aber gibt es eigentlich eine Dokumentation über die
>>>> Funktionen, Methoden usw. der t3-Klasse(n) wie z.B. exec_UPDATEquery()?
>>>>
>>>> Ideal wäre eine Referenztabelle wie TSref :-)
>>>>
>>> ExtDevEval installieren.
>>>
>>> http://typo3.org/documentation/api
>>>
>>>
>>>
>>> _______________________________________________
>>> TYPO3-german mailing list
>>> TYPO3-german at lists.netfielders.de
>>> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-german
>>> _______________________________________________
>>> TYPO3-german mailing list
>>> TYPO3-german at lists.netfielders.de
>>> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-german
>> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.netfielders.de
>> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-german
>>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.netfielders.de
> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-german



More information about the TYPO3-german mailing list