2016-11-26 27 views
0

我想顯示一個基於會話用戶名的表,但出現以下錯誤。當它是id這是工作,但是當它是username它不是Laravel - 如何在查詢中使用會話用戶名

SELECT tb_list.* FROM tb_list 
WHERE myusername = ".Session::get('username')." 

QueryException在Connection.php行662:SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL錯誤句法;檢查與您的MySQL服務器版本相對應的手冊,以便在第2行附近使用正確的語法(SQL:SELECT tb_list。 FROM tb_list WHERE username = ORDER BY id asc LIMIT 0,10 )*

在此先感謝

比方說會話所有者的用戶名是約翰

Table with NO session 
WHERE tb_list.task_id IS NOT NULL 
+---------+----------+-------------+-----------------+ 
| task_id | username | some_data | some_time | 
+---------+----------+-------------+-----------------+ 
| 1 | john | some data | 2015-02-29 1 pm | 
| 2 | jack | some data | 2015-02-29 2 pm | 
| 3 | john | some data | 2015-02-29 3 pm | 
| 4 | bill | some data | 2015-02-29 4 pm | 
+---------+----------+-------------+-----------------+ 

Table with john's session 
WHERE username=".Session::get('username')." 
+---------+----------+-------------+-----------------+ 
| task_id | username | some_data | some_time | 
+---------+----------+-------------+-----------------+ 
| 1 | john | some data | 2015-02-29 1 pm | 
| 3 | john | some data | 2015-02-29 3 pm | 
+---------+----------+-------------+-----------------+ 
+1

你爲什麼試圖從表中獲取*並嘗試登錄用戶?如果是的話,你不需要查詢只需 dd(Auth :: user())並獲取所有登錄用戶的信息。 –

+0

這是顯示包含會話所有者相同的用戶名的行 – Selim

+0

所以你沒有在會話所有者尋找行嗎? –

回答

0

我想這是因爲你缺少一個quotes.When你傳遞一個字符串值轉換成SQL查詢語句你必須把單引號。 例如,

SELECT tb_list.* FROM tb_list WHERE myusername = '".Session::get('username')."';

嘗試這一個。

+0

我試過你的。現在沒有錯誤,但表格是空的。 – Selim

+0

也許你應該嘗試echo Session :: get('username'); –

+0

我試過這個並且解決了。返回「WHERE用戶名='」.Auth :: user() - >用戶名。「'」; – Selim

0
return " WHERE username = '".Auth::user()->username."' "; 

這解決了。