我想通過使用數據庫中的信息來啓動一個新的PHP會話,但我不知道如何。幫幫我?謝謝。如何從數據庫中獲取信息到會話?
例如,我有DatabaseA,它具有TableB和RowC。我想將RowC的名字存儲到PHP會話中。我怎麼做?
我想通過使用數據庫中的信息來啓動一個新的PHP會話,但我不知道如何。幫幫我?謝謝。如何從數據庫中獲取信息到會話?
例如,我有DatabaseA,它具有TableB和RowC。我想將RowC的名字存儲到PHP會話中。我怎麼做?
有很多關於這兩個操作教程。
但是如何從數據庫中獲取信息?除了必須手動輸入行外,我試圖避免這種行爲 – user1227430 2012-02-23 04:18:37
如何從數據庫獲取信息是學習PHP基礎的一個問題。你有嗎? – 2012-02-23 04:20:21
我知道如何去做,但是每當我選擇時,選擇頂部或底部的行 – user1227430 2012-02-23 04:21:26
僞代碼:
$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的)工作。
爲什麼$ fn空白? – user1227430 2012-02-23 04:19:03
這稱爲初始化。它的預期值稍後在'while'循環中設置。 – check123 2012-02-23 04:20:44
我會假設您要求用戶輸入以限制您的查詢。如果使用後提交用戶的信息,你會做這樣的事情...
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()
。
它會工作,但這樣一個可變的重用是嚇人的 – 2012-02-23 04:25:45
我意識到你不需要像這樣參數化一個小的控制查詢,但由於你處於學習階段,你應該看看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;
?>
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子句,我只是在這個例子中加入。但是,如果你想要一個特定的名稱(帶有單一名稱返回),那是實現它的唯一方法。
你的意思是HTTP會話? – 2012-02-23 04:14:02
我的意思是這種會話。 $ _SESSION [ '姓名']; – user1227430 2012-02-23 04:14:46