2017-08-26 14 views
0

これは初めてのことですので、私には辛抱強くお待ちください。 私は試してみて成功しなかった! 私のデータベースには7つのフィールドがあり、最後のものはキーとして '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つのだけのクエリを持っているので、私は、スクリプトを調整している:私はちょうど、ID以外のすべての以前のデータと新しいレコードがこれは私のコードである1 インクリメントされますが 。データベースにはidが1のレコードが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

あなたの質問のコードはあまり意味がありません。 1つは、あなたが使用しない多くの変数を作成します。彼らはなぜそこにいるのですか?最初の選択クエリの結果をチェックしないでください。また、更新クエリでバインディングを使用していません。 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 !!!コメントする時間がかかった人に感謝します。

関連する問題