以下mysql查询有什么问题

时间:2011-04-14 09:35:15

标签: php mysql

我正在编写一个从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''附近使用正确的语法

我尝试在组和用户名周围添加引号,而不是我没有得到错误但查询在数据库中找不到行,而我确定它在那里。

3 个答案:

答案 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)

您的代码中存在一些重大缺陷

  1. 您将所有代码写入一行,使其难以阅读和处理。

  2. 您无法正确转义变量。

  3. 您没有正确的错误处理

  4. 还有一个未成年人:

    • 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);
    }