2017-08-26 81 views
0

這是我第一次,所以請耐心等待我。 我嘗試過,沒有成功! 我的數據庫有7個字段,最後一個是'id'作爲鍵和自動增量 我試圖只更新1記錄中的一個或全部字段。 不過,我剛剛得到一個新的紀錄,所有以前的數據,除了ID由1 增加這是我的代碼:PHP更新添加新記錄,ID爲0

<?php 
$error = ''; 
ini_set('display_errors', 1); 
session_start(); 
if(!isset($_SESSION['login_user'])){ // If session is not set then redirect to Login Page 
header("Location:Login.php"); 
} 

// grab connection code 
$login_id = $_SESSION['login_id']; 

include "connection.php"; 

$query = "SELECT * FROM bvoa_login WHERE id = '$login_id'"; 

// get result 
$result = $conn->query($query); 

//create array of result 
$row = $result->fetch_assoc(); 
// set existing data into variables 
$curr_name = $row["name"]; 
$curr_username = $row["username"]; 
$curr_email = $row["email"]; 
$curr_property_no = $row["property_no"];  
$curr_website = $row["website"];  

if($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (!empty($_POST['username']) && !empty($_POST['email']) 
     && !empty($_POST['new_password']) && !empty($_POST[ 'password_confirm']) && !empty($_POST['location']) && !empty($_POST['real_name'])){ 
     $username = $_POST['username']; 
     $real_name = $_POST['real_name']; 
     $email = $_POST['email']; 
     $new_password = $_POST['new_password']; 
     $password_confirm = $_POST['password_confirm']; 
     $location = $_POST['location']; 
     $website = $_POST['website']; 

     // compare passwords... 
     if (strcmp($new_password, $password_confirm) == 0){ 
      $password_hash = sha1($new_password); 
      $query = "UPDATE `bvoa_login` SET `username`='$username' WHERE `id`='$login_id'"; 
      $result = $conn->query($query); 
     }else{ 
      $error = "Passwords do not match.";  
    } 
    }else{ 
    $error = "You must enter all fields to continue."; 
    } 
$conn->close(); 
} 
?> 

OK我已經調整了腳本,它只有1個查詢。該數據庫有1個記錄,ID爲1.我仍然在ID字段中添加另一條記錄,但沒有條目。

<?php 
$error = ''; 
ini_set('display_errors', 1); 
session_start(); 
if(!isset($_SESSION['login_user'])){ // If session is not set then redirect to Login Page 
    header("Location:Login.php"); 
} 

// grab connection code 
$login_id = $_SESSION['login_id']; 

include "connection.php"; 


if($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (!empty($_POST['username']) && !empty($_POST['email']) 
     && !empty($_POST['new_password']) && !empty($_POST[ 'password_confirm']) && !empty($_POST['location']) && !empty($_POST['real_name'])){ 
     $username = $_POST['username']; 
    $real_name = $_POST['real_name']; 
     $email = $_POST['email']; 
     $new_password = $_POST['new_password']; 
    $password_confirm = $_POST['password_confirm']; 
     $location = $_POST['location']; 
    $website = $_POST['website']; 

    // compare passwords... 
    if (strcmp($new_password, $password_confirm) == 0){ 
     $password_hash = sha1($new_password); 
     $query = "UPDATE `bvoa_login` SET `username`='$username' WHERE `id`='$login_id'"; 
     $result = $conn->query($query); 
    }else{ 
     $error = "Passwords do not match.";  
    } 
}else{ 
$error = "You must enter all fields to continue."; 
} 
$conn->close(); 
} 
?> 
+0

您的問題中的代碼沒有多大意義。對於一個你創建了很多你不使用的變量。他們爲什麼在那裏?您不應該檢查第一個選擇查詢的結果。並且您沒有在更新查詢中使用綁定。你在使用PDO嗎?請參閱:http://php.net/manual/en/pdostatement.bindvalue.php –

+0

此腳本來自「更改個人資料頁面」。第一組是載入表單的原始細節。下一組是新的細節。目前我正在嘗試更新用戶名。當這個工作,我會添加其他人。檢查和安全性將在我使用後添加。但目前這個查詢正在添加一個ID爲0(零)的新記錄。我將不得不閱讀PDO。 – albumMan

+0

在MySQLi中綁定也是可能的。對於問題,最好只使用與問題相關的代碼。請參閱:https://stackoverflow.com/help/mcve通過這種方式,您也確定您的問題實際存在於您問題的代碼中。對你的問題沒有迴應的原因是你的代碼有一個'SELECT'和'UPDATE'查詢,但沒有'INSERT'查詢。沒有後者,你不可能獲得新的一排。正如我所說:代碼沒有多大意義。請不要把支票和保安視爲事後考慮,它們是最重要的。 –

回答

0

解決 - 非常愚蠢的錯誤 - 在「profile.php頁面是「register.php」的副本,我忘了改表單的動作,因此被調用錯誤的頁面 - DUHHH!感謝所有花時間發表評論的人。