2012-02-23 125 views
-1

我想通過使用數據庫中的信息來啓動一個新的PHP會話,但我不知道如何。幫幫我?謝謝。如何從數據庫中獲取信息到會話?

例如,我有DatabaseA,它具有TableB和RowC。我想將RowC的名字存儲到PHP會話中。我怎麼做?

+0

你的意思是HTTP會話? – 2012-02-23 04:14:02

+0

我的意思是這種會話。 $ _SESSION [ '姓名']; – user1227430 2012-02-23 04:14:46

回答

2
  1. 從數據庫
  2. 店得到它的會話信息

有很多關於這兩個操作教程。

+0

但是如何從數據庫中獲取信息?除了必須手動輸入行外,我試圖避免這種行爲 – user1227430 2012-02-23 04:18:37

+0

如何從數據庫獲取信息是學習PHP基礎的一個問題。你有嗎? – 2012-02-23 04:20:21

+0

我知道如何去做,但是每當我選擇時,選擇頂部或底部的行 – user1227430 2012-02-23 04:21:26

0

僞代碼:

$fn = ""; 
SELECT RowC FROM TABLE B; 
while($row = mysql_fetch_array($result_of_query) { 
     $fn = $row['firstname']; 
} 
session_start(); 
$_SESSION['firstname'] = $fn; 

閱讀this瞭解PHP和數據庫(MySQL的)工作。

+0

爲什麼$ fn空白? – user1227430 2012-02-23 04:19:03

+0

這稱爲初始化。它的預期值稍後在'while'循環中設置。 – check123 2012-02-23 04:20:44

-1

我會假設您要求用戶輸入以限制您的查詢。如果使用後提交用戶的信息,你會做這樣的事情...

session_start(); 

$userdata = mysql_real_escape_string($_POST['userdata']); 
$result = mysql_query("select RowC from TableB where somedata='$userdata'") or die(mysql_error()); 
$result = mysql_fetch_row($result); 
$result = $result[0]; 
$_SESSION['firstname'] = $result; 

當然,你必須連接到數據庫的歡迎,並與一些獨特的替換列「somedata」中。確保你也打電話給session_start()

+1

它會工作,但這樣一個可變的重用是嚇人的 – 2012-02-23 04:25:45

1

我意識到你不需要像這樣參數化一個小的控制查詢,但由於你處於學習階段,你應該看看PDO和參數化查詢,並學習正確的方法來避免未來的麻煩。

<?php 

$host = "localhost"; 
$dbname = "mydb"; 
$user = "username"; 
$pass = "password"; 

//this is where you set the value you use in your where clause to determine 
//what name to get back - I assume you'll use $_GET or $_POST or else to populate this 
$name = "bob"; 

    try { 
     $dbh = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 
    } catch(PDOException $e) { 
     echo "Problem connecting to DB, try again; if it presists contact admin."; 
     exit(); 
    } 

    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $sth_select = $dbh->prepare("SELECT row FROM table WHERE firstname = :name"); 

    $sth_select->setFetchMode(PDO::FETCH_ASSOC); 

    $sth_select->execute(array('firstname' => $name)); 

    while ($row = $sth_select->fetch()) { 
     $firstname = $row['firstname']; 
    } 

    session_start(); 

    $_SESSION['firstname'] = $firstname; 

?> 
0

SELECT名字FROM table_name的WHERE field_name = $值

如果你只是想在第一行: ORDER BY DESC LIMIT 1

最後一行: ORDER BY ASC LIMIT 1

取決於WHERE子句的含義取決於您獲得的結果數量。

如果3個人具有相同的名稱,並且它是WHERE last_name = bob。 3人名爲戴維鮑勃將加載......如果你只是想戴夫...

您需要在您的查詢的末尾添加

GROUP BY FIRST_NAME ...這將返回只有一個戴夫

編輯你不需要一個WHERE子句,我只是在這個例子中加入。但是,如果你想要一個特定的名稱(帶有單一名稱返回),那是實現它的唯一方法。