2012-05-05 35 views
1

在各种MySQL的查询,所述查询字符串的末尾的部分是:MySQL的逃逸getsqlvaluestring ACCID

" WHERE UserID = " . $AccID 

其中

$AccID = $_SESSION['UID']; 

和用户ID是在分贝的特定表的尊重BIGINT列。

所以我的问题是:我是否需要躲避$AccID这样GetSQLValueString($AccID, "text")只是为了安全起见,还是没有必要,因为它不是从用户输入取?

p.s. $_SESSION['UID']在登录过程中设置,认证成功后

回答

3

是的,你应该逃避它。当您将其放入$_SESSION(您可能想将其用于其他目的)时,但在插入查询之前,您不应将其转义。

最好的办法是使用参数化的SQL,而不是总是通过字符串连接转义和构建查询。熟悉PDOFor a better world

+0

是的,当我将它放在$ _SESSION中时,我只是在查询字符串中进行转义,而不是转义变量。尽管不是用户输入变量但只是DB,但转义它的原因是:比对不起更安全? – MIrrorMirror

+0

@MIrrorMirror比对不起更安全:)。但考虑一下这些参数化查询,自从我使用它们以后,我的睡眠就会更好。 'mysql_'函数是旧的,并会因为某种原因而被弃用。 – kapa

+0

会做,谢谢! – MIrrorMirror