2016-07-21 4 views
0

Ich habe eine Website, die Benutzer anmelden und registrieren können. Jetzt möchte ich, dass die Benutzer ihr Profil aktualisieren. Ich habe Probleme beim Aktualisieren meiner Datenbank. Mein Tabellenname ist "Mitglieder". Nichts passiert, wenn ich das Formular abschicke.Probleme bei der Aktualisierung meiner Datenbank

<?php 

if(isset($_POST["submit"])){ 

$value1 = $_POST['year']; 
$value2 = $_POST['astatus']; 
$value3 = $_POST['address']; 
$value4 = $_POST['phone']; 
$value5 = $_POST['email']; 
$newpass = $_POST['pass']; 
$newpass2 = $_POST['pass2']; 
$user=$_SESSION['sess_user']; 



     $conn = new mysqli('localhost', 'admin', 'password') or die(mysqli_error()); 
     //Select DB From database 
     $db = mysqli_select_db($conn, "database") or die("Database Error"); 
     //Selecting database 

     $update_user="UPDATE '".members."' SET year='".$value1."', astatus='".$value2."', address='".$value3."', phone='".$value4."', email='".$value5."', pass='".$newpass."' WHERE '".user."'='".$user."'"; 

       if(isset($_SESSION["editerror"])){ 
       session_destroy(editerror); 
       } 

       session_start(editsuccess); 
       $_SESSION["editsuccess"] ="Your student profile has been successfully updated."; 
       header("Location:profile.php"); 











} 
else{ 
echo "error"; 
} 


?> 
+0

Sie nie Ihre schrecklich [SQL-Injection-Attacke] ausführen (http: // bobby-Tabellen. com) anfällige Abfrage. Alles, was Sie tun, ist eine Verbindung mit der db, definieren Sie eine Variable mit einigen SQL darin und dann beenden. Plus. 'Mitglied' und' Benutzer'? Nicht definierte Konstanten? oder Variablen, denen ihr '$' fehlt? –

+0

Sie erstellen Ihre Abfrage, aber führen Sie sie nie aus. Außerdem - Sie erstellen es, indem Sie die Variablen direkt in SQL hinzufügen, und das öffnet Sie für die SQL-Injektion. Untersuchen Sie eine vorbereitete Aussage – andrewsi

Antwort

0

Hinweis: alwayes verwenden mysqli_real_escape_string - Maskiert spezielle Zeichen in einer Zeichenfolge für die Verwendung in einer SQL-Anweisung, unter Berücksichtigung der aktuellen charset der Verbindung

http://www.w3schools.com/php/func_mysqli_real_escape_string.asp


Verwenden Sie Vorbereitungsanweisung beim Aktualisieren

http://php.net/manual/en/mysqli.prepare.php

Sie vergessen Abfrage auszuführen

$update_user="UPDATE `members` SET `year`='".$value1."', `astatus`='".$value2."', `address`='".$value3."', `phone`='".$value4."', `email`='".$value5."', `pass`='".$newpass."' WHERE `user` ='".$user."'"; 


     if ($conn->query($update_user) === TRUE) { 
      session_start(editsuccess); 
      $_SESSION["editsuccess"] ="Your student profile has been successfully updated."; 
      header("Location:profile.php"); 

     } else { 
      echo "Error updating record: " . $conn->error; 
     } 

http://www.w3schools.com/php/php_mysql_update.asp

0

eine session am oberen Rand der Seite beginnen

<?php 
session_start(); 
if(isset($_POST["submit"])){ 

$value1 = $_POST['year']; 
.... 

Und wo ist dein mysqli_query()

führen Sie Ihre query

$result = mysqli_query($conn, $update_user) or die(mysqli_error($conn)); 

Ihre query ist auch falsch Verwendung dieses

$update_user="UPDATE members SET year='".$value1."', astatus='".$value2."', address='".$value3."', phone='".$value4."', email='".$value5."', pass='".$newpass."' WHERE user ='".$user."'"; 
0
$update_user="UPDATE '".members."' SET year='".$value1."', astatus='".$value2."', address='".$value3."', phone='".$value4."', email='".$value5."', pass='".$newpass."' WHERE '".user."'='".$user."'"; 

sollte

Sie
$update_user = "UPDATE members SET year='" . $value1 . "', astatus='" . $value2 . "', address='" . $value3 . "', phone='" . $value4 . "', email='" . $value5 . "', pass='" . $newpass . "' WHERE user = '" . $user . "'"; 

auch nicht jene Werte wie die an die Datenbank übergeben müssen. Sie müssen sie ordnungsgemäß entfernen, um eine Datenbankinjektion zu verhindern.