2013-02-25 141 views
1

我收到以下错误,当我提交表单:SQL错误 - 不正确的整数值

Can't added a new post. Incorrect integer value: '' for column 'aid' at row 1 

PHP代码:

$insert = mysql_query("INSERT INTO brt_articles VALUES('', '$post_title', '$des', 
'$date', '$org_date')");  

    if($insert) 
    { 
     echo "<font color=green>Successfully added a new article.</font>"; 
     header("Refresh:3; url=allbrtarticle.php"); 
    } 
    else 
    { 
     echo "<font color=red>Can't added a new post</font>" . 
       mysql_error(); 
    } 

在我的本地也没关系。但在服务器为什么它给我一个错误消息?

+0

列'aid'的类型是什么? – 2013-02-25 04:30:52

+0

在数据库表中将'aid'改为'autoincrement'会解决这个问题。 – 2013-02-25 04:31:20

+0

那么,@马丹萨波塔,我正在检查它.. – 2013-02-25 04:32:14

回答

0

aid字段不接受''值作为输入。

最安全的方法是在发送查询时指定列名称。

INSERT INTO brt_articles (title_field, description_field, date_field, org_date, fieldname) VALUES('$post_title', '$des', '$date', '$org_date'); 

如果aid是主键,只是省略查询

INSERT INTO brt_articles VALUES('$post_title', '$des', '$date', '$org_date') 
+0

谢谢@Starx处理你的第一个陈述。但是我已经设置了主键和自动增量的帮助列。那么为什么你的第二个陈述不起作用? – 2013-02-25 04:50:07

+0

而我上传它(我的代码)到另一台服务器,但它工作正常! – 2013-02-25 04:52:01

0

aid是一个整数的列,并且您试图将''插入到该列中。 ''不是一个数字,所以插入失败。

也许有一个服务器设置为自动转换的类型不正确,但你不应该依赖它(如你刚刚发现)

0

这将导致错误援助(INT) - 这包含在你的表格列(第一列)中。

如果它的自动增量删除''。

$insert = mysql_query("INSERT INTO brt_articles VALUES('$post_title', '$des', 
'$date', '$org_date')"); 

问候

+0

这是一个自动增量字段。 – 2013-02-25 04:34:49

+0

为什么它不在我的本地主机中给我提供错误信息? – 2013-02-25 04:35:21

+0

如果其自动增量字段不应该添加值。 – BizApps 2013-02-25 04:37:46

0

尝试

"INSERT INTO brt_articles VALUES('".$post_title."', '".$des."', '".$date."', '".$org_date."')" 

删除第一''它不需要像MySQL如果自动添加其primary keyauto_increment

0

本地数据库有一个列设置为自动递增的值或具有默认值字段。

在服务器db上,表的定义是不一样的。

查看并比较表格定义,然后使其一致。

+0

如果他将本地数据库表上传到服务器,那么你的陈述是不正确的。 – 2013-02-25 04:44:00

+0

谢谢 - 现在我看到不存在的文本,他说他上传本地数据库表到服务器 – mson 2013-02-25 04:48:48

2

可能是DB有不同于你本地的设置。 STRICT_TRANS_TABLES模式可能已打开。 尝试SELECT @@GLOBAL.sql_mode;SELECT @@SESSION.sql_mode;