0

次のコードでこのエラーが発生する理由を理解しようとしています。

SQL 構文にエラーがあります。''username' , 'password' ) VALUES ('Pangamma', '39ef1e6d2fb0743000e5956362b6dc55'' 行 1 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

パスワード、電子メール、およびユーザーはすべて正しいです。データベースの設定も同様です。頭を壁にぶつけ続けて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!';
        }
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());

2番目のクエリでは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 に答える