好的,当我尝试插入数据库时,我收到了这个错误
“您的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)
答案 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;