2014-01-11 65 views
0

我正在尋找訪問存儲在會話中的登錄user_id,並將其發佈在查詢中。因此,像:有沒有辦法發佈會話變量?

if(!empty($_SESSION['user_id'])) { 
    $_POST['user_id'] = $_SESSION['user_id']; 
    $ui = $_POST['user_id']; 
} else { 
    $errors[] = 'Please login before posting a book for sale.'; 
} 

,然後在查詢:

if (empty($errors)) { 
$q = 'INSERT INTO books (user_id, isbn, name, image, price) VALUES (?, ?, ?, ?, ?)'; 
$stmt = mysqli_prepare($dbc, $q); 
mysqli_stmt_bind_param($stmt, 'isssd', $ui, $isbn, $bn, $i, $p); 
mysqli_stmt_execute($stmt); 

現在我已經知道第一個IF語句是不正確的,但我的貼吧一樣,這樣你就可以PHP'ers看看我想完成什麼。我想弄清楚如何獲取存儲的變量user_id,使其變得粘稠,然後將其發佈到查詢中。謝謝!

+0

爲什麼你想把它分配給POST,並_then_到另一個變量,並使用後者?你想要做什麼?爲什麼不直接綁定$ _SESSION? –

+0

本質上,我試圖只是將存儲的變量添加到查詢中,因爲在數據庫中它是一個索引值。 – JNoel

回答

2

既然你已經保存在您的$_SESSION['user_id']可變..

你爲什麼不只是使用:

$ui = $_SESSION['user_id']; 
+0

請參閱。像這樣簡單。我非常感謝你的迴應。謝謝! – JNoel

0

只要把session id在一個變量。無需編寫任何POST變量。 你可以使用這樣的:

$your_variable = $_SESSION['user_id']; 
//according to your code you can write it 
$ui = $_SESSION['user_id']; 

,肯定不會忘記在頁面頂部使用session_start();

+0

你實際上提出了一些不經意的,有趣的事情。我通過include('includes/form.php')在索引頁上包含表單。我有session_start();在我的索引頁面的頂部,它要求用戶登錄。當我以這種格式提交表單時,form.php不會或不能訪問存儲的變量。當我將其複製到form.php時,它給了我一個錯誤,說我已經開始了兩次會話。然後我刪除了索引頁上的那個,但是它不能訪問索引頁上的存儲變量。有針對這個的解決方法嗎? – JNoel

+0

當您在表單中開始會話時,請將其放在表單提交後。否則每次提交表單時,您的會話都會清楚。 而當你想在其他頁面中使用會話變量時,將'session_start()'放在那些頁面的頂部。 –