2016-07-12 3 views
-1

セッション変数を使用して特定のユーザーの情報を更新したいのですが、where句でセッション変数を使用すると、その行は影響を受けません。セッション変数を使用してテーブルを更新できません

ここでは、セッション変数 'username'の値を変数$ userに保存しています。更新するwhere句で$ user変数を使用して行を更新しています。しかし、私はそれが更新されない更新します。 ここに私が使用したコードです:

<?php 
//session_start(); 
include '../global_config/databaseconfig.php'; 
global $user; 
if(isset($_SESSION['username'])){ 
    $user = $_SESSION['username'];} 
echo $user; 
global $fname;global $lname;global $phno;global $gender; 
if(isset($_POST['fname'])){ $fname = $_POST['fname']; } 
if(isset($_POST['lname'])){ $lname = $_POST['lname']; } 
if(isset($_POST['phno'])){ $phno = $_POST['phno']; } 
if(isset($_POST['gender'])){ $gender = $_POST['gender']; } 
echo $fname; 
// $lname = $_POST['lname']; 
//$user variable contains the username 

    $tbl_name = "members"; 
    // $host = "localhost"; // Host name 
    // $username = "root"; // Mysql username 
    // $password = ""; // Mysql password 
    // $db_name = "login"; // Database name 
    // $tbl_name = "members"; // Table name 
    //CONNECTION 
    $mysqli = new mysqli($host,$username,$password,$db_name); 
if ($mysqli->connect_errno) { 
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
} 

// echo $mysqli->host_info . "\n"; 

$mysqli = new mysqli("127.0.0.1",$username,$password,$db_name, 3306); 
if ($mysqli->connect_errno) { 
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
} 
// echo $mysqli->host_info . "\n"; 
$result = $mysqli->query("UPDATE `members` SET `firstname`='$fname' WHERE `username`='$user'"); 
printf("Affected rows (SELECT): %d\n", $mysqli->affected_rows); 


?> 
+0

なぜあなたはセッションを開始していませんか? – Drew

+0

SQLの 'UPDATE ...'ステートメントは '$ user'変数を使用していません。ちょうど' WHERE username = 'test''と書かれています –

+0

SQLでは '$ _POST'データを直接使用するのは危険ですSQLインジェクション攻撃と呼ばれる大きなセキュリティホールを開いています。このWebページでは、より多くの方法とそれを防ぐ方法について説明しています:http://packetcode.com/article/preventing-sql-injection-php-security –

答えて

0

助けてくれてありがとう。

//use this at the beginning of the file 
    @session_start(); 

セッションを使用する前に、セッションを開始する必要があります。

関連する問題