我有兩個表在我的數據庫中,第一個表叫用戶它包含: ID,名,姓,電子郵件,密碼,散列,活動。插入數據從一個表到另一個表幾乎工作
第二個表稱爲上市,它包含: USER_ID,USER_EMAIL,listing_id,listing_title,list_description,上市_公司,listing_city,listing_image。
我想確保當用戶登錄到網站並創建新的列表時,該列表將被ID和電子郵件識別。
所以基本上我想從繁重的ID和電子郵件是在用戶表,並把它插入到USER_ID和USER_EMAIL列在上市表中的信息。
而我做到了,有點。
問題是,如果我登錄到網站並創建列表,數據庫將在列表表中顯示錯誤的user_id和user_email。 因此,例如:
如果我以[email protected]身份登錄,用戶ID爲1,我將創建一個新列表,當我轉到列表表格時,我可以看到user_id和user_email是不同的,它從最新的列拉在用戶桌上,而不是用戶是在實際登錄數據。
希望我自己清楚。
下面是代碼:
這是一個名爲「新掛牌的functions.php」
<?php
error_reporting(E_ALL);
require 'db.php';
if(!isset($_SESSION)) {
session_start();
}
$result = $mysqli->query("SELECT * FROM users");
$query = "SELECT id, email FROM users";
if ($result = $mysqli->query($query)) {
/* Fetch associative array */
while ($row = $result->fetch_assoc()) {
$user_id_from_users_table = $row['id'];
$user_email_from_users_table = $row['email'];
}
$result->free();
}
$_SESSION['id'] = $_POST['user_id'];
$_SESSION['email'] = $_POST['user_email'];
$_SESSION['listing_title'] = $_POST['listing_title'];
$_SESSION['listing_description'] = $_POST['listing_description'];
$_SESSION['listing_country'] = $_POST['listing_country'];
$_SESSION['listing_city'] = $_POST['listing_city'];
$_SESSION['listing_image'] = $_POST['listing_image'];
$listing_title = $mysqli->escape_string($_POST['listing_title']);
$listing_description = $mysqli>escape_string($_POST['listing_description']);
$listing_country = $mysqli->escape_string($_POST['listing_country']);
$listing_city = $mysqli->escape_string($_POST['listing_city']);
$listing_image = $mysqli->escape_string($_POST['listing_image']);
$sql = "INSERT INTO listing (user_id, user_email, listing_title,
listing_description, listing_country, listing_city, listing_image)".
"VALUES('$user_id_from_users_table','$user_email_from_users_table',
'$listing_title', '$listing_description', '$listing_country',
'$listing_city', '$listing_image')";
if($mysqli->query($sql)) {
$_SESSION['message'] = "Thank you for creating a listing "
.$_SESSION['firstname'];
//header("location: home.php");
}
?>
文件這是從頁面代碼的形式(「新上市.php'):
<?php
require 'db.php';
session_start();
if(!$_SESSION['logged_in']) {
header("location: home.php");
}
require 'head.php';
?>
<?php
if($_SERVER['REQUREST_METHOD'] = 'POST') {
if(isset($_POST['post_listing'])) {
require 'new-listing-functions.php';
}
}
?>
<body id="new-listing">
<div class="new-listing-container">
<form action="#" method="post">
<input type="hidden" name="user_id">
<input type="hidden" name="user_email">
<input type="text" name="listing_title" placeholder="Listing Title">
<br>
<textarea name="listing_description" id="" cols="30" rows="20" placeholder="Listing Description"></textarea>
<input type="text" name="listing_country" placeholder="Country"><br>
<input type="text" name="listing_city" placeholder="City"><br>
<input type="file" name="listing_image""><br>
<button name="post_listing">Proceed</button>
</form>
</div><!-- new-listing-container -->
</body>
</html>
在此先感謝您的幫助!
我用while循環來獲得排來自用戶表的信息,但是當我用不同的用戶登錄時,我仍然從用戶表中獲取最後一個條目 –
您將會因爲您所做的只是將每行設置爲'id'和'email'直到它用完循環。除了循環遍歷'用戶'中的每一行,您在循環中沒有做任何事情。 –
您認爲最好的解決方案是什麼? –