kostenloser Webspace werbefrei: lima-city


mysql update problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    bastitrial

    Kostenloser Webspace von bastitrial

    bastitrial hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. bastitrial schrieb:
    ... Und es kommt nur das echo: "<br>es ist ein Fehler aufgetreten!";

    Was habe ich bisher falschgemacht?
    ein zeichen zu viel??!!

    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 zeilen
    ini_set('display_errors', '1'); 
    error_reporting(E_ALL | E_STRICT);
    ;)

    Beitrag zuletzt geändert: 27.8.2013 1:11:21 von czibere
  4. Autor dieses Themas

    bastitrial

    Kostenloser Webspace von bastitrial

    bastitrial hat kostenlosen Webspace.

    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 :-/?
  5. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    Wenn ich mir das Manual ansehe, wird das ohne den Klammern verwendet bei der Klasse, also
    if ($verbindung->affected_rows == 1) {
  6. Autor dieses Themas

    bastitrial

    Kostenloser Webspace von bastitrial

    bastitrial hat kostenlosen Webspace.

    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
  7. was zeigt unter affected_rows phpmyadmin an?
  8. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    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
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!