MySQL:where子句错误中的未知列

use*_*551 6 php mysql sql mysql-error-1054

我有一个PHP脚本,由于某种原因,mysql继续将值视为选择/插入列.这是我的SQL查询的一个例子:

$query = mysql_query("SELECT * FROM tutorial.users WHERE (uname=`".mysql_real_escape_string($username)."`)") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)

这变成了:

SELECT * FROM tutorial.users WHERE (uname=`test`)
Run Code Online (Sandbox Code Playgroud)

错误是:

'where子句'中的未知列'test'

我也尝试过:

SELECT * FROM tutorial.users WHERE uname=`test`
Run Code Online (Sandbox Code Playgroud)

tpd*_*pdi 35

在MySql中,反引号表示标识符是列名.(其他RDBMS使用括号或双引号).

因此,您的查询是"给我所有行,其中名为'uname'的列中的值等于名为'test'的列中的值".但是由于表中没有名为test的列,因此您会看到错误.

用单引号替换反引号.


med*_*iev 9

奇怪的?怎么会这样?它确切地说出了什么是错的.您的表中没有"测试"列.你确定你有合适的桌子吗?'tutorial.users'?你确定表的名称不同吗?也许你打算做

SELECT * from users WHERE uname = 'test';
Run Code Online (Sandbox Code Playgroud)

假设数据库已命名,则必须仅引用表名而不是数据库 tutorial