$ _SESSION ['用户名']不起作用(SQL / PHP)

时间:2017-08-04 22:58:02

标签: php mysql session

我即将使用PHP

更新SQL中的变量
if( ! empty($result) and $result == 1){
    $sql = "UPDATE members SET payment='1' WHERE username=$_SESSION['username']";
}

当我手动设置用户名时,代码可以正常运行,但是当我使用username=$_SESSION['username']username='".$_SESSION['username']."'时,它无法识别用户名并且它无法正常工作,您能不能帮帮我?

2 个答案:

答案 0 :(得分:0)

$sql = "UPDATE members SET payment='1' WHERE     username='{$_SESSION['username']'}";

在这种情况下,您需要围绕字符串的单引号用户名

答案 1 :(得分:0)

首先阅读SQL注入,参数化查询等...您的代码非常危险(参见:mysqli_real_escape_string)。

你没有用引号括起变量..字符串将作为SQL呈现给MySQL,而不是字符串。

并且,PHP无法确定您没有尝试引用名为$_SESSION的变量或变量的元素。你需要用大括号括起来:username = '{$_SESSION['username']}'

最后,使用'username'作为主键是很糟糕的设计,你应该在会话中存储用户的ID并根据它来执行查询。会话存储空间有限,在其中存储字符串是非常不鼓励的。即使名称列已编入索引,MySQL也可以更快地按ID而不是名称查找记录。