Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 738|回复: 0

解决ThinkPHP的Create方法失效而没有提示错误信息的问题

[复制链接]
  • TA的每日心情
    奋斗
    1 小时前
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-10 19:48:21 | 显示全部楼层 |阅读模式
    ThinkPHP中的数据创建Create方法是一个非常有用的功能,它自动根据表单数据创建数据对象(在表字段很多的情况下尤其明显)
    但有时候该方法可能并未按照你期望的来工作,比如方法不工作而且还没有提示错误信息
    这个时候你就要好好仔细检查下你的代码了,因为很有可能你写的代码不规范或是其他原因
    以下是我因为自己的粗心而出现的问题: Create方法失效而没有提示错误信息
     /**
         * 编辑数据
         * @Author   HTL
         * @Email    huangyuan413026@163.com
         * @DateTime 2015-10-30T17:00:29+0800
         */
        function edit_post(){
            if(IS_POST){
             
                print_r($this->org_model);
                if ($this->org_model->create()) {
                    //code
                    echo $this->org_model->_sql();//最后一条执行的Sql
                    
                    die ("create");
                } else {
                    echo $this->org_model->_sql();//最后一条执行的Sql
                    die($this->org_model->getError());
                }
            }
        }

     

     
    浏览器发出的POST请求数据
     
    edit_post打印的信息
    1. Think\Model Object
    2. (
    3. ***
    4. ***
    5. )
    6. SHOW COLUMNS FROM `table1`
    好像上面的都没有什么问题,最主要的是得到了数据库信息(在Mysql里可以正常执行)但就是if(create()){}里的代码没有执行
    说明create方法并未按照预期执行,该问题我找了半个小时在网络上也看了别人的一些经历都没有解决
     
    然后我就看了下数据库表结构,我似乎明白了什么于是我把表字段的全部更改成小写然后再执行就解决了
     
    问题原因: Html元素的值跟数据库存在大小写差异
     
    参考网络上的经验总结下以下规则可解决以上问题:
    1. HTML中的元素是否指定了name属性且name的值跟数据库中的值完全一致(区分大小写)
    2. 确认HTML表单中的数据正确发送了出去
    3. Model 命名是否错误能否找到对应的表(能否打印了Model对象)
    4. Model类及其成员方法是否是私用或受保护
    5. Model的getError()方法是否有错误
    6. 方法能否接收到POST的值,POST接收到的值跟请求的值是否一致(注意大小写)
    7. 确认遵守了ThinkPHP的开发规范
    如果以上还没有解决你的问题,那要考虑下你的人品了
     
    参考:





    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-11-24 17:01 , Processed in 0.210117 second(s), 28 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表