2016-07-21 110 views
0

我有一個網站,用戶可以登錄和註冊。現在,我希望用戶更新他們的個人資料。我無法更新我的數據庫。我的表名是「成員」。我提交表單時什麼都不會發生。無法更新我的數據庫

<?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

你永遠不執行你的可怕[SQL注入攻擊(HTTP://鮑比桌。 com)易受攻擊的查詢。你所做的只是連接到數據庫,用一些sql定義一個var,然後退出。加。 'member'和'user'?未定義的常量?或變量缺少他們的'$'? –

+0

您創建您的查詢,但從不運行它。另外 - 您正在通過將變量直接添加到SQL中來創建它,併爲您打開SQL注入。看看使用準備好的聲明 – andrewsi

回答

0

注:Alwayes使用mysqli_real_escape_string - 轉義特殊字符在SQL語句中使用的字符串,考慮到連接

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


當前字符集更新時使用準備聲明

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

你忘了執行查詢

$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

在你的頁面

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

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

的頂部開始session哪裏是你的mysqli_query()

運行query

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

query也是錯誤的使用這一個

$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."'"; 

應該

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

你也不得通過這些值這樣的數據庫。您必須正確轉義它們以防止數據庫注入。