2013-07-08 104 views
2

在一個頁面上,我顯示登錄用戶名的用戶,其工作完好。選擇聲明中的會話變量

echo "Welcome, ".$_SESSION['username'] 

我想創建一個Select語句,它使用與上面相同的變量來爲該用戶提取所有數據。

實例用戶名是[email protected]

我用這個,看看是否編碼工作,它做到了。

$sql="SELECT * FROM $tbl_name WHERE myusername ='[email protected]'"; 
$result=mysql_query($sql); 

但我想用變量;我嘗試了下面的代碼,但它沒有奏效。

$sql="SELECT * FROM $tbl_name WHERE myusername ='$_SESSION['username']'"; 
$result=mysql_query($sql); 

我肯定知道它與使用變量的SELECT語句,即時通訊,如果我正確有關的變量不知道的事。

幫助將不勝感激。

+0

您在$ SQL作業結尾缺少一個雙引號 – Orangepill

+0

你缺少你右雙引號 - '$ SQL =「SELECT * FROM $ tbl_name其中MyUserName = '$ _ SESSION [' 用戶名」] ';'需要是'$ sql =「SELECT * FROM $ tbl_name WHERE myusername ='$ _ SESSION ['username']'」;' – Sean

回答

6

使用

$sql="SELECT * FROM $tbl_name WHERE myusername ='{$_SESSION['username']}'"; 

此語法在您使用PHP的變量替換容量串嘗試是更容易閱讀,在-至少當你有一個字符串來替代多個變量。

+0

比我的回答更清潔 –

+0

Thanx :) ....., –

+0

美麗,我討厭用點和雙引號搞亂,我會更多地使用這個語法 – Benjamin

0

當你真的需要存儲在那裏的東西時,你返回一串myusername = $ _SESSION ['username']。刪除''並將該變量追加到字符串中。

事情是這樣的:

$ SQL = 'SELECT * FROM $ tbl_name其中MyUserName ='。 $ _SESSION ['username']。 '';

+0

@andrewsi是的,對不起,我不清楚我想說什麼 –

2

基本PHP語法規則:

echo "$arr['key']"; // wrong 
echo "$arr[key]";  // right 
echo "{$arr['key']}"; // right 

注意,{}語法是必需的,如果你要嵌入一個多維的:當在字符串中嵌入一個數組引用,你不要在鍵使用引號陣列:

echo "$arr[foo][bar]"; 

被解析爲

echo $arr['foo']; 
echo '[bar]'; 

廣告鼎{}使得PHP的使用,整個陣列按鍵順序:

echo "{$arr['foo']['bar']}"; 
0

您還沒有結束查詢: -

$sql="SELECT * FROM $tbl_name WHERE myusername ='$_SESSION['username']'; // double quotes missing 

即使Stackoverflow代碼高亮顯示它。

0

`$ sql =「SELECT * FROM $ tbl_name WHERE myusername ='$ _ SESSION [username]'」;

$結果= mysql_query($ SQL);`

更正上面的代碼。

會話中不會有用戶名引用。

0
$result = mysql_query("SELECT * FROM tbl_task where username = '".$_SESSION['username']."' ORDER By DateAssigned ASC "); 
+0

你的答案有一個SQL注入問題。參見:https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – Waterscroll

+0

Whi這個代碼可以解決這個問題,[包括一個解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)如何以及爲什麼解決這個問題真的有助於改善您的帖子的質量,並可能導致更多的選票。請記住,你正在爲將來的讀者回答這個問題,而不僅僅是現在問的人。請編輯您的答案以添加解釋,並指出適用的限制和假設。 – Makyen