2010-03-15 35 views
0

我的一个网页我希望我的经理用户查看分配给他们的所有活动(个人)。为了做到这一点,我需要的是这样的:在SQL查询中绘制会话值? PHP和MySQL

$sql = "SELECT * FROM activities WHERE manager = $_SESSION['SESS_FULLNAME']"; 

现在很明显,这个语法都错了,而是因为我是新来这个东西,是有办法,我可以调用从用户的全名查询中的会话?这是因为,当我调用要在网页中显示的数据库值时,仅显示登录的经理的活动。例如,活动表具有全名条目的管理员列。任何帮助深表感谢。谢谢。

回答

0
$sql = "SELECT * FROM activities WHERE manager = '".$_SESSION['SESS_FULLNAME']."'"; 

要你应该使用报价查询中使用变量...

使用'查询定义字符串..

即。 如果经理是一个数字使用 WHERE manager = ".$_SESSION['SESS_FULLNAME'](没有“)
如果经理是一个字符串 WHERE manager = '".$_SESSION['SESS_FULLNAME']."'

+0

你是我的英雄(直到我遇到我的下一个问题!)非常感谢你。 – Yvonne 2010-03-15 14:31:44

+1

请注意,字符串文字必须使用mysql_real_escape_string() – 2010-03-15 14:40:41

+0

@Derek进行转义。请参阅Shrapnel上校的建议,并且不要在查询中包含未转义的字符串。另请参见:SQL注入。 – middus 2010-03-15 15:00:01

2

其实,你不必‘离开’的字符串。您可以更轻松地做到这一点:

$sql = "SELECT * FROM activities WHERE manager = {$_SESSION['SESS_FULLNAME']}";

更多信息,请参见PHP's double-quoted string syntax

也就是说,请在处理动态参数时使用prepared statements或转义变量(按照优先顺序)。