thinkphp 我用其提供的add和save方法做插入和更新操作时,居然有默认值,int型的默认0,结果sql执行出错 200

我的数据前台没有填,这个字段是外键字段,结果0就挂了。谁能帮忙解答一下,有人碰到过吗?或者如何不让它有默认值... 我的数据前台没有填,这个字段是外键字段,结果0就挂了。谁能帮忙解答一下,有人碰到过吗?或者如何不让它有默认值 展开
 我来答
learneroner
高粉答主

2014-01-21 · 关注我不会让你失望
知道大有可为答主
回答量:1.1万
采纳率:91%
帮助的人:6571万
展开全部
应该是没有默认值的,看看是不是数据库中相应字段属性误操作为有默认值了。
更多追问追答
追问
没有。数据库外键,我怎么可能会设置默认值。我从前台接收过来的也是null,到后台add后就有0了。我的有默认值的,比如30,90的默认值。但是tp也是给我插入的0,我的新增数据中,除了我填的几个,剩下的int型的都变成0了。
我怀疑是不是有什么配置的问题,tp的自动功能
追答
“我的数据前台没有填”是什么意思?那个外键字段的属性非空么?你没有数据,而属性要求非空的话,要么报错(oracle数据库),要么可能就给默认值了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
molaifeng
2014-01-23 · TA获得超过5273个赞
知道大有可为答主
回答量:1629
采纳率:50%
帮助的人:1787万
展开全部

那你打印下执行的sql,也就是在执行add或save语句后写上

echo M()->getlastsql();

在页面上打印下,在复制sql到工具中运行,看报什么错,断点调试嘛

更多追问追答
追问
我在Logs日志文件中看了。里面运行的sql就是一大堆的只要是int类型的通通是0。我有的字段是有默认值的。但是运行的sql也是0.通通是0
追答
有默认值,要么数据库字段有默认值,要么传递的时候要传的是int型的,你传的是字符串型的转成了0,其他的我就不知道了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千年446
2014-01-21 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:121
采纳率:0%
帮助的人:76.2万
展开全部
add save都是自动的吧
取得都是$_GET 或$_POST的数据

你可以接受的时候,自己给那个字段一个值 ,比如null,1什么的,看你需求而定
更多追问追答
追问
这倒是也行。但是我不明白为嘛给我来个默认值0.而且我的有默认值的字段也是变为了0,看楼上追问。
而且null这样可以?
追答
看你的意思 其实外键系统没有取到值
你dump($_POST['tid']) 假如tid为外键
如果这里面出来30,你插入之后变成0 再来继续讨论
如果这里面本来就是0 那么你save之后肯定还是0了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chinalande
2014-01-28 · 超过79用户采纳过TA的回答
知道小有建树答主
回答量:397
采纳率:0%
帮助的人:98.1万
展开全部
先获取这个外键值,然后再保存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yyg291906351
2014-01-23 · 超过73用户采纳过TA的回答
知道小有建树答主
回答量:392
采纳率:50%
帮助的人:122万
展开全部
断点调试 一下 看看sql 错误 输出的问题 自己修改数据库默认值试试
追问
你molaifeng的回答,和我的追问吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式