-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);
?>
なぜあなたはセッションを開始していませんか? – Drew
SQLの 'UPDATE ...'ステートメントは '$ user'変数を使用していません。ちょうど' WHERE username = 'test''と書かれています –
SQLでは '$ _POST'データを直接使用するのは危険ですSQLインジェクション攻撃と呼ばれる大きなセキュリティホールを開いています。このWebページでは、より多くの方法とそれを防ぐ方法について説明しています:http://packetcode.com/article/preventing-sql-injection-php-security –