Php MySQL插入错误

Php MySQL插入错误,php,mysql,mysql-error-1064,Php,Mysql,Mysql Error 1064,好的,当尝试插入数据库时,我得到了这个错误 “您的SQL语法有错误; 检查相应的手册 您的MySQL服务器版本 在“@email.com”附近使用正确的语法, UT,84505,NOW(),69.169.186.192)“在 第1行“ 我想不出这个问题。这是我的insert语句的代码 $insert_query = sprintf("INSERT INTO contacts (first_name, last_name, email, state, zip, date, ip) VALUES (

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

“您的SQL语法有错误; 检查相应的手册 您的MySQL服务器版本 在“@email.com”附近使用正确的语法, UT,84505,NOW(),69.169.186.192)“在 第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)

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


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

如果您可以回显$insert\u查询,这会有所帮助,但看起来您没有在VARCHAR参数周围加引号

$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);
顺便说一下,您的insert中有一个额外的列-现在看起来与列无关。 顺便说一下,我假设ZIP是一个varchar列,而不是一个数字。

这可能会对您有所帮助

$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;

这是$insert\u query insert INTO contacts(名字、姓氏、电子邮件、状态、邮政编码、日期、ip)值(你、我、,a@a.com,AL,12345,NOW(),69.169.186.192)是的,你需要按照Mat的建议去做。将编辑我的答案以反映。是的,这是一个varchar,你是对的。这修正了我的错误。谢谢你的回答。太好了。这就成功了。在前面的代码中,我在每个变量上使用了mysql\u real\u escape\u string()。这不是正确的方法吗?好的。非常感谢你的帮助。我对整个程序设计都不熟悉。我将阅读更多关于SQL注入的内容,这样我就不会再犯这个错误,并确保我的网站安全!我感谢大家的迅速反应。