试图找出以下代码产生此错误的原因。
您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在“用户名”,“密码”附近使用正确的语法。)VALUES(第1行''Pangamma','39ef1e6d2fb0743000e5956362b6dc55'
密码,电子邮件和用户都是正确的。数据库设置也是如此。我现在已经在墙上敲了3个小时。可能是一件非常简单的事情。我做错了什么?
/** 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!';
}
答案 0 :(得分: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的关键字。所以它会给你语法错误。
答案 1 :(得分:3)
您必须在列名称周围使用反引号,而不是单引号。
INSERT INTO `$db_database`.`$tb_logins` ( 'username' , 'password' )
应该是
INSERT INTO `$db_database`.`$tb_logins` ( `username` , `password` )
答案 2 :(得分:2)
将您的第一个mysql_query语句更改为:
mysql_query("INSERT INTO '$db_database'.'$tb_logins' ( username , password ) VALUES ('$user', '$hash')") or die(mysql_error());
答案 3 :(得分: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());