PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL-Problem: Editieren von Daten



Tomarus
22.12.2004, 18:08
Ja ... dafür lautet der Code ja normalerweise



mysql_query ('UPDATE blablabla SET mail = "mail@blub.com" WHERE user = "Tomarus"');
//


funzt so bei mir auch, wenn ich denn wie oben einfach nur die gewünschte reihe und die einzutragenden daten ins script schreibe. nun bringt mir das aber für ein script, in der der user z.B. sein passwort ändern will, herzlich wenig, wenn ich es von vornerein ins script schreibe, was genau wo reingespeichert werden soll. dafür müsste ich dann halt die eingabe des users abfragen und diese in die datenbank speichern ... aber genau das funktioniert bei mir nicht >_>
probiert habe ich es schon in der form



mysql_query ('UPDATE blablabla SET mail = "$_POST[newmail]" WHERE user = "$user"');
//


sowie auch



mysql_query ('UPDATE blablabla SET mail = $_POST[newmail] WHERE user = $user');


genau so wenig gehts auch, wenn ich vorher das eingegebene in einer extravariable speicher und diese dann eintragen lassen will ... das gleiche problem tritt zb auch bei nem loginscript auf, wenn er das gespeicherte passwort des eingegebenen usernamens abfragen und mit dem eingegebenen vergleichen soll.

das dämlichste ist, dass ich auch schon solche scripts, mit denen man genau das erreicht, von tutorials und anderen (funktionierenden!) scripts kopiert habe, und es geht trotzdem nicht ... getestet hab ichs sowohl auf servern mit php4 als auch auf welchen mit php5. irgendwie hab ich keine ahnung was ich noch probieren soll ...

hier ma das ganze script dieser update.php:


$mysqluser = 'user';
$mysqlpass = 'password';
$mysqlhost = 'localhost';
$database = 'blablabla';

mysql_connect ($mysqlhost, $mysqluser, $mysqlpasswd);
mysql_select_db ($database);

mysql_query ('UPDATE blablabla SET mail = "$_POST[new]" WHERE user = "$user"');
// bzw alternativ ohne die häkchen um die variablen ...

mysql_close();

echo ('Änderungen eingetragen.');
// schön wärs >_>

Chocwise
22.12.2004, 18:14
Gibt $user und $_POST[new] mal zur Kontrolle im selben Script per echo aus.
Ich vermute irgendwie das "array" für $user ausgegeben wird, oder eines von beidem gar nicht erst gesetzt ist.

Tomarus
22.12.2004, 18:18
wird beides korrekt ausgegeben ... oder was wäre die richtige reaktion ? ^^

Chocwise
22.12.2004, 18:36
wird beides korrekt ausgegeben ... oder was wäre die richtige reaktion ? ^^
Gut, dann bau diesen Teil des Codes:

mysql_query ('UPDATE blablabla SET mail = "$_POST[new]" WHERE user = "$user"');
So um wie ich ihn immer verwende:

mysql_query ("UPDATE blablabla SET mail = '$_POST[new]' WHERE user = '$user'");
Also die Quotes mit den Apostrophes vertauscht.
*zucktmitdenschltern* Ein Versuch ists wert. ;)

Dingsi
22.12.2004, 18:44
$_POST[new] ist schlecht. Du solltest lieber $_POST['new'] verwenden. Bei ersterem Fall sieht PHP das new wohl als Konstante/Schlüsselwort an und führt, jedenfalls bei strenger Fehlersensibilität (schon das zweite mal, dass ich das Wort heute schreibe o_O), zu Fehlermeldungen.
Man kann aber auch nicht so einfach $array['bla'] in einem "-String schreiben. Da sollte man dann { } drum machen oder gleich den String unterbrechen mit dem .-Operator.
Im Endeffekt:
mysql_query ("UPDATE blablabla SET mail = '".$_POST['new']."' WHERE user = '".$user."'"); oder
mysql_query ("UPDATE blablabla SET mail = '{$_POST['new']}' WHERE user = '{$user}'");

dadie
22.12.2004, 18:46
ICh glaube ich habe den fehler :D


mysql_query ('UPDATE blablabla SET mail = "$_POST['new']" WHERE user = "$user"');

So sollte es heissen



mysql_query ('UPDATE blablabla SET mail = "".$_POST['new']."" WHERE user = "".$user":"');

Wenn es nicht dieser fehler ist weiss ich auch nett weiter

edit:
DAMN da war wer schneller trotzdem ist meine Lösung anderrs :D

Tomarus
22.12.2004, 19:10
mysql_query ("UPDATE blablabla SET mail = '".$_POST['new']."' WHERE user = '".$user."'");
.

jaaaaa, funzt *dance*
danke euch, ihr seid supa :A ;)

Dingsi
22.12.2004, 19:56
mysql_query ('UPDATE blablabla SET mail = "".$_POST['new']."" WHERE user = "".$user":"');
Das geht sicher nicht. oO. Du öffnest den String doch mit '. Also mysql_query(' << da. Und willst in dann bei $_POST mit " unterbrechen. Äh. Ja. Schaus dir doch mal im Syntahighlight an. Da sieht man doch schon dass das nicht gehen kann.

²Tomarus: np. ^^. man hilft doch gerne.