2016-11-26 26 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."' "; 

这解决了。