MySQL插入错误

时间:2011-03-30 05:55:06

标签: php mysql mysql-error-1064

好的,当我尝试插入数据库时​​,我收到了这个错误

  

“您的SQL语法有错误;   检查对应的手册   您的MySQL服务器版本   正确的语法在'@ email.com附近使用,   UT,84505,NOW(),69.169.186.192)'at   第1行“

我无法弄清楚问题。这是我的insert语句的代码。

$insert_query = sprintf("INSERT INTO contacts (first_name, last_name, email, state, zip, date, ip) VALUES (%s, %s, %s, %s, %s, NOW(), %s)",
                        $fname,
                        $lname,
                        $email,
                        $state,
                        $zip,
                        $ip);


$result = mysql_query($insert_query, $connection) or die(mysql_error());

我的表格结构如下:

    id int(11)                              
    first_name  varchar(100)                                 
    last_name   varchar(100)                             
    email   varchar(100)                                 
    state   varchar(3)                               
    zip int(10)                             
    date    datetime                                
    ip  varchar(255)

3 个答案:

答案 0 :(得分:2)

您需要引用insert语句中的所有字符串类型列。将%s替换为sprintf格式的'%s'

如果您还没有这样做,请阅读SQL注入。

答案 1 :(得分:0)

如果你可以回显$ insert_query会有所帮助,但看起来你并没有在varchars的参数周围加上引号。

$insert_query = sprintf("INSERT INTO contacts (first_name, last_name, email, state, zip, date, ip) VALUES ('%s', '%s', '%s', '%s', '%s', NOW(), '%s')",
                        $fname,
                        $lname,
                        $email,
                        $state,
                        $zip,
                        $ip);

顺便说一下,你的插入中有一个额外的列 - 现在看起来与列没有关系。 我假设ZIP是varchar列,而不是数字,顺便说一句。

答案 2 :(得分:0)

这可能对你有帮助..

$insert_query = "INSERT INTO contacts set first_name = '$fname', last_name = '$lname', email = '$email', state = '$state', zip = '$zip', date = ". time() .", ip = '$ip')";


$result = mysql_query($insert_query, $connection) or die(mysql_error());

如果要查看查询

echo $insert_query;