我正在编写一个从mysql数据库中选择用户的php脚本。用户由用户所属的用户名和组定义。我之前做过这个,但现在我得到了一个错误。
function user($username, $group) {
$result = mysql_query("SELECT * FROM users
WHERE username='$username' AND group='$group'")
or die(mysql_error()); }
我正在使用xampp版本运行脚本:1.7.4,PHP版本:5.3.5(VC6 X86 32位)+ PEAR和MySQL版本5.5.8(社区服务器)。它收到以下错误:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的'group ='1a''附近使用正确的语法
我尝试在组和用户名周围添加引号,而不是我没有得到错误但查询在数据库中找不到行,而我确定它在那里。
答案 0 :(得分:5)
group
是mysql保留字
在反引号中包含列名
$result = mysql_query("SELECT * FROM users
WHERE `username`='$username'
AND `group`='$group'") or die(mysql_error());
以下是mysql reserved words
的列表答案 1 :(得分:0)
应该是
"SELECT * FROM `users` WHERE `username`='$username' AND `group`='$group'"
答案 2 :(得分:0)
您的代码中存在一些重大缺陷
您将所有代码写入一行,使其难以阅读和处理。
您无法正确转义变量。
您没有正确的错误处理
还有一个未成年人:
group
是一个保留字,因为它已经提到了。 代码应为
function user($username, $group) {
$username = mysql_real_escape_string($username);
$group = mysql_real_escape_string($group);
$sql = "SELECT * FROM `users` WHERE `username`='$username' AND `group`='$group'";
$res = mysql_query($sql) or trigger_error(mysql_error()." in ".$sql);
// dunno what should be here, assuming a user data
return mysql_fetch_assoc($res);
}