[英]fetch id from session and store into a different table
我已經使用會話制作了一個用戶登錄-注銷表單。 我用於會話的代碼是
retailer_login_session.php
<?php
$connection = mysqli_connect("as.com", "as", "as");
$db = mysqli_select_db("as", $connection);
session_start();
$user_check=$_SESSION['login_user'];
$ses_sql=mysqli_query("select * from retailer_signup where id='$user_check'", $connection);
$row = mysqli_fetch_assoc($ses_sql);
$login_session =$row['id'];
$user_firstname = $row['firstname'];
$user_lastname = $row['lastname'];
if(!isset($login_session)){
mysqli_close($connection);
header('Location: index.html');
}
?>
例如能夠為retailer_signup是
id firstname lastname email password
1 f.retailer l.retailer retailer@gmail.com retailer
用戶的主頁需要顯示table named retailer_add_property
的table named retailer_add_property
中的項目列表。 我希望與列表一起在用戶的主頁上顯示零售商的ID,並將其進一步保存到數據庫中
例如,retailer_add_property的表是
id propertyname propertytype retailerid
1 n.property t.property
我用來在用戶個人資料頁面上顯示ID的代碼是
<div class="form-group">
<label class="col-lg-3 control-label">Retailer Unique ID:</label>
<? echo $login_session;?>
</div>
有助於在后端將form的值插入數據庫中的php代碼是
<?php
include('retailer_login_session.php');
$con=mysqli_connect("ab.com","ab","ab","ab");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// escape variables for security
$propertyname = mysqli_real_escape_string($con, $_POST['propertyname']);
$propertytype = mysqli_real_escape_string($con, $_POST['propertytype']);
$sql="INSERT INTO retailer_add_property(propertyname,propertytype,retailerid) VALUES ('$propertyname','$propertytype','$login_session')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
header("Location: index.html");
mysqli_close($con);
?>
我的問題是id的值既不會顯示也不會存儲在數據庫中。 希望對問題有所幫助
將該ID保存在會話中
$login_session =$row['id'];
store in session
$_SESSION['login_session'] =$row['id'];
並插入像
$sql="INSERT INTO retailer_add_property(propertyname,propertytype,retailerid) VALUES ('$propertyname','$propertytype','".$_SESSION['login_session']."')";
並且不要忘記在希望使用會話變量的每個頁面上啟動會話
首先,您需要省略include('retailer_login_session.php');
如果您確實想進行包含,則從第二個代碼體開始,並僅對數據庫使用標准包含。
在您的第一段代碼中$user_check=$_SESSION['login_user'];
為空,因為沒有為$_SESSION['login_user']
分配任何內容,因此它只是處於混亂狀態。
我認為您想使用某人登錄的表單。
您首先需要從輸入中分配POST變量,然后將其分配給會話變量,然后使用該會話變量並將其分配給變量。 我知道這聽起來有點令人困惑,但這就是這樣做的方式。
然后,您需要使用while
循環遍歷表並將變量分配給要使用的行。
基於以下模型,並查看整個代碼中的注釋。 我是在這里教您,而不是用代碼來喂您, 這是“學習”的好方法。
<?php
session_start();
$DB_HOST = "xxx"; // replace with yours
$DB_NAME = "xxx"; // ...
$DB_USER = "xxx"; // ...
$DB_PASS = "xxx"; // ...
$conn = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($conn->connect_errno > 0) {
die('Connection failed [' . $conn->connect_error . ']');
}
// $_POST['propertyname'] = 12345; // for testing purposes only
$var = $_POST['propertyname'];
$_SESSION['login_user'] = $var;
$user_check= $_SESSION['login_user'];
$ses_sql=mysqli_query($conn,"select * from your_table where column_name='$user_check'");
while($row = mysqli_fetch_assoc($ses_sql)){
$login_session = $row['column_name']; // this matches the WHERE clause
$user_firstname = $row['firstname'];
$user_lastname = $row['lastname'];
echo $login_session; // for testing purposes
}
if(isset($_SESSION['login_user'])){
echo $user_check; // will echo from entered POST
$login_session = $user_check;
echo "<br>";
echo $login_session; // will echo same from entered POST. Test
}
// var_dump($_SESSION); // tool to check what is in memory for session
<?php
session_start();
$DB_HOST = "xxx"; // replace with yours
$DB_NAME = "xxx"; // ...
$DB_USER = "xxx"; // ...
$DB_PASS = "xxx"; // ...
$conn = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($conn->connect_errno > 0) {
die('Connection failed [' . $conn->connect_error . ']');
}
if(isset($_SESSION['login_user'])){
$login_session = $_SESSION['login_user'];
echo $login_session; // for testing purposes
$sql="INSERT INTO your_table (the_column) VALUES ('$login_session')"; // keep $login_session
if (!mysqli_query($conn,$sql))
{
die('Error: ' . mysqli_error($conn));
}
}
// var_dump($_SESSION); // tool to check what is in memory for session
邊注:
眾所周知,這些代碼行是不正確的,它們在代碼的第一正文中。
$db = mysqli_select_db("as", $connection);
$ses_sql=mysqli_query("select * from retailer_signup where id='$user_check'", $connection);
使用mysqli_
時,數據庫連接mysqli_
例如:
$db = mysqli_select_db($connection,"as");
$ses_sql=mysqli_query($connection,"select * from retailer_signup where id='$user_check'");
一個更安全的方法:(仔細閱讀這些內容,他們是值得的)。
將mysqli_
與預處理語句一起使用 ,或PDO與預處理語句一起使用 。
如果有任何問題,請使用錯誤報告 。
將其放在每個文件的頂部:
error_reporting(E_ALL);
ini_set('display_errors', 1);
以及or die(mysqli_error($conn))
mysqli_query()
這將有助於故障排除/調試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.