thinkphp 我用其提供的add和save方法做插入和更新操作时,居然有默认值,int型的默认0,结果sql执行出错 200
我的数据前台没有填,这个字段是外键字段,结果0就挂了。谁能帮忙解答一下,有人碰到过吗?或者如何不让它有默认值...
我的数据前台没有填,这个字段是外键字段,结果0就挂了。谁能帮忙解答一下,有人碰到过吗?或者如何不让它有默认值
展开
5个回答
展开全部
应该是没有默认值的,看看是不是数据库中相应字段属性误操作为有默认值了。
更多追问追答
追问
没有。数据库外键,我怎么可能会设置默认值。我从前台接收过来的也是null,到后台add后就有0了。我的有默认值的,比如30,90的默认值。但是tp也是给我插入的0,我的新增数据中,除了我填的几个,剩下的int型的都变成0了。
我怀疑是不是有什么配置的问题,tp的自动功能
追答
“我的数据前台没有填”是什么意思?那个外键字段的属性非空么?你没有数据,而属性要求非空的话,要么报错(oracle数据库),要么可能就给默认值了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那你打印下执行的sql,也就是在执行add或save语句后写上
echo M()->getlastsql();
在页面上打印下,在复制sql到工具中运行,看报什么错,断点调试嘛
更多追问追答
追问
我在Logs日志文件中看了。里面运行的sql就是一大堆的只要是int类型的通通是0。我有的字段是有默认值的。但是运行的sql也是0.通通是0
追答
有默认值,要么数据库字段有默认值,要么传递的时候要传的是int型的,你传的是字符串型的转成了0,其他的我就不知道了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
add save都是自动的吧
取得都是$_GET 或$_POST的数据
你可以接受的时候,自己给那个字段一个值 ,比如null,1什么的,看你需求而定
取得都是$_GET 或$_POST的数据
你可以接受的时候,自己给那个字段一个值 ,比如null,1什么的,看你需求而定
更多追问追答
追问
这倒是也行。但是我不明白为嘛给我来个默认值0.而且我的有默认值的字段也是变为了0,看楼上追问。
而且null这样可以?
追答
看你的意思 其实外键系统没有取到值
你dump($_POST['tid']) 假如tid为外键
如果这里面出来30,你插入之后变成0 再来继续讨论
如果这里面本来就是0 那么你save之后肯定还是0了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先获取这个外键值,然后再保存
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
断点调试 一下 看看sql 错误 输出的问题 自己修改数据库默认值试试
追问
你molaifeng的回答,和我的追问吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询