Php 将表的列与当前会话匹配

Php 将表的列与当前会话匹配,php,mysql,Php,Mysql,我正在尝试将$username变量与当前会话用户名(登录帐户的用户名)匹配 我正在使用以下代码,但出现了一个解析错误:语法错误、意外的T_封装的_和_空白,应为T_字符串、T_变量或T_NUM_字符串 $result = mysql_query("SELECT * FROM settings WHERE $username = $_SESSION['username']") 我在这里看到三个非常明显的错误: PHP将对查询中的$username求值为PHP的$username变量的值,您显然没

我正在尝试将$username变量与当前会话用户名(登录帐户的用户名)匹配

我正在使用以下代码,但出现了一个解析错误:语法错误、意外的T_封装的_和_空白,应为T_字符串、T_变量或T_NUM_字符串

$result = mysql_query("SELECT * FROM settings WHERE $username = $_SESSION['username']")

我在这里看到三个非常明显的错误:

PHP将对查询中的
$username
求值为PHP的
$username
变量的值,您显然没有该变量,而该变量又将求值为“”

$\u SESSION['username']
应该加引号(“”或“”),因为它显然是一个字符串值

此外,我将其改写为:

$result = mysql_query("SELECT * FROM settings WHERE username = '" . $_SESSION['username'] . "'");
也就是说,您不希望在不首先清理的情况下将任何变量从PHP直接传递到查询。这是一个注射天堂

[编辑]


此外,看到错误消息时,错误可能在别处。除非你真的错过了
在您的行的末尾。此外,该错误应该给出发生解释错误的确切PHP行号

多了解一下你所犯的错误就好了。此外,将直接变量引入查询是一种非常糟糕的做法。@favoretti如果只从数据库中提取用户名与当前用户匹配的行,您会怎么做?查询没有问题(除了我回答中的问题),但为了安全起见,我会通过
$\u会话['username']