2013-10-17 32 views
0

我有以下代码:MySQL的消毒上和mysql_fetch_row

$username = $_SESSION['username'];  
$query = ("SELECT id FROM users WHERE username = '$username'"); 
$result = mysql_query($query) or die (mysql_error()); 
$row = mysql_fetch_row($result); 
$user_id = $row[0]; 

我应该在哪里申请在这里mysql_real_escape_string? 请问$user_id = mysql_real_escape_string($row[0]);有用吗?

我知道MySQL应该留在过去。我很快就会转向MySQLi。

+3

无处。您应该使用准备好的语句。 –

+0

您想将其应用于潜在的用户输入,而不是您的输出 – MLeFevre

+0

好的。所以我应该只为$ _POST ['something']使用mysql_real_escape_string,对吧? – SporeDev

回答

0

为此在第一行:

$username = mysql_real_escape_string($_SESSION['username']); 

和变革查询此:

$query = ("SELECT id FROM users WHERE username = '".$username."'"); 
+0

谢谢亚当。我想问你点事儿。你为什么按照你的方式编写查询?这是一个concatanation,不是吗? – SporeDev

+0

@SporeDev查询不需要改变,只要第一行出现在查询之上,连接对查询没有任何影响,除了任何性能差异之外。 – naththedeveloper

+0

这些性能差异会更好还是更差? – SporeDev