0

试图弄清楚为什么下面的代码会产生这个错误。

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 ''username' , 'password' ) VALUES ('Pangamma', '39ef1e6d2fb0743000e5956362b6dc55'' 在第 1 行附近使用的正确语法

密码、电子邮件和用户都正确。数据库设置也是如此。我已经把头敲在墙上三个小时了。可能是一些非常简单的事情。我究竟做错了什么?

/** returns a reason if it fails **/
        function addUser($user,$password,$email){
            global $db_database;global $tb_logins;global $tb_info; global $tb_licenses;
            $licensekey = md5($user.$password.$email);
            $hash = md5($user.'please'.$password.'the salt');
            if (mysql_num_rows(mysql_query("SELECT * FROM ".$tb_logins." WHERE username='$user'")) > 0){
                return 'error : username already in use.';
            }
            mysql_query("INSERT INTO `$db_database`.`$tb_logins` ( 'username' , 'password' ) VALUES ('$user', '$hash')") or die(mysql_error());
            mysql_query("INSERT INTO $tb_info (`username`,`email`,`licensekey`,`limit`) VALUES ('".$user."','".$email."','".$licensekey."','0')") or die(mysql_error());
            return 'success!';
        }
4

4 回答 4

5

单引号 ( ') 仅用于值,不用于选择列。

您可以使用 backtik ( `) 如下

mysql_query("INSERT INTO `$db_database`.`$tb_logins` (`username` ,`password`) VALUES ('$user', '$hash')") or die(mysql_error());

或者你可以不用任何东西放置它

mysql_query("INSERT INTO `$db_database`.`$tb_logins` (username ,password) VALUES ('$user', '$hash')") or die(mysql_error());

对于第二个查询,您已将其用作limit列名。请不要使用它,因为它是 SQL 的关键字。所以它会给你语法错误。

于 2013-09-10T05:23:46.387 回答
3

您必须在列名周围使用反引号,而不是单引号。

INSERT INTO `$db_database`.`$tb_logins` ( 'username' , 'password' )

应该

INSERT INTO `$db_database`.`$tb_logins` ( `username` , `password` )
于 2013-09-10T05:24:51.603 回答
2

将您的第一个 mysql_query 语句更改为:

mysql_query("INSERT INTO '$db_database'.'$tb_logins' ( username , password ) VALUES ('$user', '$hash')") or die(mysql_error());
于 2013-09-10T05:25:57.037 回答
2

更改此行

mysql_query("INSERT INTO $db_database. $tb_logins( 'username' , 'password' ) VALUES ('$user', '$hash')") 或 die(mysql_error());

    mysql_query("INSERT INTO `$db_database`.`$tb_logins` ( `username` , `password` ) VALUES ('$user', '$hash')") or die(mysql_error());
于 2013-09-10T05:26:08.580 回答