-1

我收到以下错误:


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 ''login' ('id', 'uname', email', 'pass') VALUES (NULL, 'X', 'X' at line 1

代码如下:


<?php

    require('config.php');
    if(isset($_POST['submit'])){

        //Perform the verification
        $email1 = $_POST['email1'];
        $email2 = $_POST['email2'];
        $pass1 = $_POST['pass1'];
        $pass2 = $_POST['pass2'];

        if($email1 == $email2){
            if($pass1 == $pass2){
                //All good. Carry on.

                $uname = mysql_escape_string($_POST['uname']);
                $email1 = mysql_escape_string($email1);
                $email2 = mysql_escape_string($email2);
                $pass1 = mysql_escape_string($pass1);
                $pass2 = mysql_escape_string($pass2);

                mysql_query("INSERT INTO 'login' 
                                ('id', 'uname', email', 'pass') 
                        VALUES (NULL, '$uname', '$email1', '$pass1')") or die(mysql_error());

            }else{
                echo "Passwords do not match.<br />";
                exit();
            }
        }else{
            echo "Emails do not match.<br /><br />";
            exit();
        }

有人可以把我推向正确的方向吗

亲切的问候,

4

3 回答 3

5

对表名和列名使用反引号而不是单引号。请通读此以获得进一步的解释:http ://dev.mysql.com/doc/refman/5.0/en/identifiers.html

mysql_query("INSERT INTO `login` (`id`, `uname`, `email`, `pass`) VALUES (NULL, '$uname', '$email1', '$pass1')") or die(mysql_error());

只是为了指出其他问题,在您的查询中,虽然“单引号”的使用不正确,但您在email列中缺少开头的“单引号”。

另请注意,mysql_扩展已被弃用,因此开始研究实施mysqliPDO.

于 2013-08-01T23:25:30.497 回答
0

使用 ` 字符转义字段和表名,' 只是值分隔符。

于 2013-08-01T23:25:44.077 回答
0

您应该使用反引号而不是撇号来转义表名和列名。

于 2013-08-01T23:27:21.330 回答