Mysql UPDATE funktioniert nicht

headphphunter

Grünschnabel
Hallo,
ich habe ein Problem, denn msql_query liefert bei meinen Code true zurück, obwohl nichts in der Tabelle geändert wird.
PHP:
<?php
mysql_connect("localhost", "******", "*********")or die("cannot connect");
$key=$_POST['reg_key'];
$status = mysql_query("UPDATE users SET register_status = '1' WHERE register_status = '0' AND password = '$key'");
echo $status;
if ($status = true ) {
	echo "Erfolgreich freigeschaltet und dazu ausgeloggt.<br/><a href=\"main_login.php\">Hier</a> kannst du dich neu einloggen.";
}
else{
	echo "Konnte code nicht erkennen. Bitte neu versuchen.<br/>
	Hier neu <a href=\"main_login.php\">einloggen</a>";
}
?>
Woran kann das liegen dass die Tabelle nicht geupdatet wird, aber der Erfolg angezeigt wird.

Ps: Ich benutze bplaced als host

EDIT: Im SQL-Fenster von myPHPadmin funktionert es.
 
Zuletzt bearbeitet:
Hallo und Willkommen hier im Forum...

Also um mal eben auf dein Problem zurück zu kommen:
mysql_connect sollte immer auf eine Variable gelegt werden
Code:
$connection = mysql_connect('*****','*****','*****');
,da man diese dann als Verbindungskennung benutzen kann und weiterhin könnte die Verbindung andernfalls nicht geschlossen werden
Code:
mysql_close($connection);

Weiter gehts:

In die Query die oben erwähnte Verbindungskennung einschreiben:

Code:
$status = mysql_query($connection, "UPDATE users SET register_status = 1 WHERE register_status = 0 AND password = '$key'");

Als letztes gibts es noch eine Anmerkung zur deiner If-Verzweigung.
Ein einfaches = dient als Zuweisungsoperator, jedoch nicht zum vergleichen.
Für einen Vergleich benötigst du ==.

Code:
if ($status == true ) {....}

Mir fällt grad ein, dass man dafür in deinem Falle nicht mal einen Vergleich benötigt - würde also auch folgendermaßen funktionieren:

Code:
if ($status) {....}

Hoffe ich konnte dir ein wenig weiterhelfen - wenn es noch Probleme gibt einfach nochmal melden.
 
Danke für euer (eig. ja dein) herzliches Willkommen :D
Wenn ich deinen Vorschlag befolge
In die Query die oben erwähnte Verbindungskennung einschreiben:
Code:
$status = mysql_query($connection, "UPDATE users SET register_status = 1 WHERE register_status = 0 AND password = '$key'");
kommt bei mir folgender Fehler.

Warning: mysql_query() expects parameter 1 to be string, resource given in /users/b-game/www/register_code.php on line 4

Was habe ich dort falsch gemacht ?


EDIT: Der Fehler war, dass die Verbindungsbedingungen hinter die auszuführenden Befehle gehören,
jetzt mysql_query aber false zurück.
 
Zuletzt bearbeitet:
Setz mal folgendes in deinen Code ein:

Code:
var_dump($status);

und poste uns mal die Ausgabe, die du dann hast.

Ich bin ja eigentlich immer geneigt ein @ vor die Variablen zu setzen, die so einen Fehler werfen (in deinem Falle $status). Dann ist zwar die Fehlermeldung weg, aber wir haben das Problem nicht gelöst) -> am besten garnicht erst angewöhnen ;-).
 
wenn ich dies vor dem mysql_query eingebe kommt die Ausgabe null, danach bool(false).
Dies fragt meine abfrage ja auch ab

EDIT: Ach ja... wenn ich den SQL-Code direkt im myPHPadmin eingebe (mit eingesetzter Variable) wird dei Tabelle geändert.
 
Zuletzt bearbeitet:
Okay,

der Fehlermeldung nach, wird hier versucht eine Abfrage zu tätigen, bei der der Typ der Eingabe im Query nicht mit dem Inhaltstyp des DB-Feldes übereinstimmt (Beispiel String != Integer).

Deshalb vermute ich mal, dass das Feld register_status vom Typ String/varchar oder etwas in dieser Richtung ist.

Demnach hatte ich vorhin fäschlicherweise die ' um die 1 und die 0 entfernt. Diese solltest du einfach wieder einfügen und das Problem sollte gelöst sein.

Code:
$status = mysql_query($connection, "UPDATE users SET register_status = '1' WHERE register_status = '0' AND password = '$key'");
 
register_status ist vom Typ boolean. Die ' waren bloß zum ausprobieren. Wenn ich (da es ja bool ist) true oder false einsetzte funktioniert es auch nicht.


EDIT: Mit mysql_error() bekomme ich den Fehler No database selected. Wie kann ich eine Datenbank (und dann auch noch Tabelle?) auswählen ?
 
Zuletzt bearbeitet:
SUPER ES GEHT
Ich muss erst die Datenbank auswählen mit

$select = mysql_select_db('meine_datenbank', $connection);

Der ganze Code lautet also
PHP:
<?php
$connection = mysql_connect('localhost','b-game','ri3ubul7921e67');
$select = mysql_select_db('b-game', $connection);
$key=$_POST['reg_key'];

$status = mysql_query("UPDATE users SET register_status = 1 WHERE register_status = 0 AND password = '$key'", $connection) OR die(mysql_error());
if ($status == true ) {
	echo "Erfolgreich freigeschaltet und dazu ausgeloggt.<br/><a href=\"main_login.php\">Hier</a> kannst du dich neu einloggen.";
}
else{
	echo "Konnte code nicht erkennen. Bitte neu versuchen.<br/>
	Hier neu <a href=\"main_login.php\">einloggen</a>";
}
?>

Danke Alex für deine Hilfe :)
 
Zurück