-1

PHP スクリプトを実行しようとしていますが、実行するたびにこのエラーが発生します。

エラー:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''id', 'firstname', 'lastname', 'email', 'username', 'password', 'hash', 'active'' at line 1

PHP:

<?php
require('includes/connect.php');

if($_POST['submit'] == true) {

    $firstname = mysql_real_escape_string($_POST['firstname']);
    $lastname = mysql_real_escape_string($_POST['lastname']);
    $email = mysql_real_escape_string($_POST['email']);
    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);
    $hash = mysql_real_escape_string(md5(uniqid(rand(), true)));
    $active = mysql_real_escape_string(0);

    $query = mysql_query(" INSERT INTO users_main ( 'id', 'firstname', 'lastname', 'email', 'username', 'password', 'hash', 'active' ) VALUES ( '', '" . $firstname . "', '" . $lastname . "', '" . $email . "', '" . $username . "', '" . $password . "', '" . $hash . "', '" . $active . "' ) ") or die(mysql_error());

} else {

}

?>
4

1 に答える 1

6

列名を一重引用符で囲まないでください。MySQL は、列とテーブルの識別子を引用するためにバックティックを使用します。

一部の特別なキーワードは、識別子として使用する場合はバッククォートで引用する必要がありますが、それらのいずれも使用していません。どの列も引用する必要はありません。

 $query = mysql_query(" INSERT INTO users_main ( id, firstname, lastname, email, username, password, hash, active ) VALUES ( '', '" . $firstname . "', '" . $lastname . "', '" . $email . "', '" . $username . "', '" . $password . "', '" . $hash . "', '" . $active . "' ) ") or die(mysql_error());
于 2012-05-05T21:55:52.423 に答える