mysql update problem
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
benutzer
code
datenbank
email
ergebnis
fehler
header
http
klammern
liebes forum
manual
record
set
statement
treffer
update
url
verbindung
vorsichtig umgehen
zeile
-
Hallo liebes Forum,
ich versuche zurzeit auf meiner Website ein "erster Login" ein zurichten ... dh. das der Benutzer bei seinem ersten Login erst einmal sein Passwort und seine -Mail Adresse ändern muss ...
Ich benutze hierfür das UPDATE ...
Hier einmal der Code:
<?php session_start(); echo nl2br(print_r($_SESSION,true)); $benutzer_hash = $_SESSION['']; $email = $_POST['']; $neues_passwort_1 = $_POST[''']; $neues_passwort_2 = $_POST['']; $passwort_hash = md5($neues_passwort_2); if (!empty($email) && !empty($neues_passwort_1) && !empty($neues_passwort_2)) { require('database.php'); //Datenbank SQL $sql = "UPDATE `` SET `email`='$email', `passwort`='$passwort_hash', `aktiviert`=2 WHERE `benutzer`.`cookie_hash`='$benutzer_hash'"; $ergebnis = $verbindung->query($sql); if ($ergebnis->affected_rows = 1) { unset($_SESSION['']); unset($_SESSION['']); header('location: ../'); exit; } else { echo "<br>es ist ein Fehler aufgetreten!"; } } else { $_SESSION['fehler_erster_login'] = 1; } ?>
Und es kommt nur das echo: "<br>es ist ein Fehler aufgetreten!";
Was habe ich bisher falschgemacht?
Vielen dank,
basti -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
bastitrial schrieb:
ein zeichen zu viel??!!
... Und es kommt nur das echo: "<br>es ist ein Fehler aufgetreten!";
Was habe ich bisher falschgemacht?
yo mey! mit selbstgeschriebenen meldungen sollte man vorsichtig umgehen ;)
probiere mal das:<?php ini_set('display_errors', '1'); error_reporting(E_ALL | E_STRICT); session_start(); echo nl2br(print_r($_SESSION,true)); $benutzer_hash = $_SESSION['']; $email = $_POST['']; $neues_passwort_1 = $_POST[''']; $neues_passwort_2 = $_POST['']; $passwort_hash = md5($neues_passwort_2); if (!empty($email) && !empty($neues_passwort_1) && !empty($neues_passwort_2)) { require('database.php'); //Datenbank SQL $sql = "UPDATE `` SET `email`='$email', `passwort`='$passwort_hash', `aktiviert`=2 WHERE `benutzer`.`cookie_hash`='$benutzer_hash'"; $ergebnis = $verbindung->query($sql); if ($ergebnis->affected_rows = 1) { unset($_SESSION['']); unset($_SESSION['']); header('location: ../'); exit; } else { echo "<br>es ist ein Fehler aufgetreten!"; } } else { $_SESSION['fehler_erster_login'] = 1; } ?>
dann wirst du's sehen woran es liegt.
(und in der folge noch ein paar fehlern!
nicht vergessen die zeilenini_set('display_errors', '1'); error_reporting(E_ALL | E_STRICT);
;)
Beitrag zuletzt geändert: 27.8.2013 1:11:21 von czibere -
Ok, ich habe das Probiert und es kommt diese Zeile:
Fatal error: Call to undefined method mysqli::affected_rows() in # on line 18
Und das ist die Code Zeile:
if ($verbindung->affected_rows() == 1) {
Mit dieser Zeile will ich überprüfen ob bei UPDATE in der Datenbank ein treffer erziehlt worden ist ...
Weisst du zufällig wo das Problem liegt :-/? -
Jetzt bekomme ich schonmal keine Fehlermeldung:-) Danke!
Jedoch bekomme ich immer wieder Meldung das keine Übereinstimmung in der Datenbank ist :-/
$verbindung->query("UPDATE `#` SET `#`='$#', `#`='$#', `#`=2 WHERE `#`.`#`='$#'"); if ($verbindung->affected_rows == 1) { unset($_SESSION['user_log']); unset($_SESSION['erster_login']); header('location: ../'); exit; } else { echo "<br>es ist ein Fehler aufgetreten!"; }
Also in meinem Code ist das die Zeile: echo "<br>es ist ein Fehler aufgetreten!";
Wenn ich mir die SQL Zeile ausgeben lasse, und diese dann als SQL in PHPmyadmin eingebe, funktioniert sie jedes mal .-/
Ist das vielleicht die Falsche Möglichkeit zur Überprüfung? Oder wnede ich sie einfach nur Falsch an...?
LG
basti -
was zeigt unter affected_rows phpmyadmin an?
-
Möglicherweise liegt das daran, weil du nur dann keinen Fehler bekommst, wenn du genau 1 Ergebnis hast?
Du kannst ja mit einem SQL-Statement auch mehrere Datensätze gleichzeitig updaten
An integer greater than zero indicates the number of rows affected or retrieved. Zero indicates that no records were updated for an UPDATE statement, no rows matched the WHERE clause in the query or that no query has yet been executed. -1 indicates that the query returned an error.
Du solltest beim Prüfen mit IF eher prüfen, ob größer als 0 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage